ee5510b880fce54601ec238182a0807f837f5f62
[mono.git] / mono / mini / ChangeLog
1 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2
3         * debugger-agent.c: handle incomplete reads and EINTR in
4         recv()/send(). This could have been causing random
5         disconnections.
6
7 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
8
9         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
10         points.
11
12         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
13         so they have small offsets. Fixes #566311.
14
15 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
16
17         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
18
19 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
20
21         * mini-amd64.c: Remove the special casing of byref in a few places now that
22         mini_type_get_underlying_type () handles it.
23
24         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
25         by returning native int. Fixes #577984.
26
27 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
28
29         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
30         a macro.
31
32         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
33         of putting the clause itself.
34
35         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
36
37 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
38
39         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
40         might be unaligned.
41
42 2010-02-10  Geoff Norton  <gnorton@novell.com>
43
44         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
45
46 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
47
48         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
49         llvm methods too.
50
51         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
52         it is not an LLVM generated symbol.
53
54         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
55
56         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
57         implementation in gshared mode because it causes regressions.
58
59         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
60
61         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
62         should be done by the caller.
63
64         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
65
66         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
67
68         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
69         since mono_jit_info_table_find () doesn't do it anymore.
70
71         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
72         instead of mono_jit_info_table_find ().
73
74 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
75
76         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
77
78         * aot-compiler.c (encode_method_ref): Update after the removal of
79         mono_gc_get_managed_allocator_type ().
80
81         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
82         Fixes #564538.
83
84 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
85
86         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
87         generic params as well.
88         (handle_isinst): Ditto.
89
90         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
91         instead of always calling an icall.
92
93         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
94         computing the size of the got.
95
96         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
97         when using LLVM. Instead of emitting it as an LLVM method, emit it using
98         the assembly directive '.set' so it points to the first LLVM emitted method.
99
100 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * mini.c (mini_method_verify): Report the method which failed to verify.
103
104 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
105
106         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
107         to avoid JIT'ng dead basic blocks. This is the same behavior as the
108         runtime MS verifier.
109
110 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
111
112         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
113         #561962.
114
115 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
116
117         * mini-llvm.c: Init the jit module only when first JITting.
118
119         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
120
121         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
122
123         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
124         replaced with the real got.
125
126         * debugger-agent.c (type_commands): Return the enumness if the type as well.
127
128         * image-writer.c: Reduce the amount of #ifdefs a bit.
129
130         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
131         llvm on darwin/arm.
132
133         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
134
135         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
136         global.
137
138 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
139
140         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
141         (mono_llvm_emit_method): Fix unaligned stores too.
142
143         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
144         so async stack walks don't crash.
145
146 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
147
148         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
149         was not patched if the callee needed an rgctx trampoline.
150
151 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
152
153         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
154         vtable address in AOT code.
155
156 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
157
158         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
159         MonoInst's.
160
161 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
162
163         * genmdesc.pl: remove dependency on external cpp.
164
165 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
166
167         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
168         using LLVM, its not needed, and abcrem can't handle it.
169
170 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
171
172         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
173         it easier to group instructions and reduce duplication.
174
175 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
176
177         * decompose.c: Move the array/soft float decompose routines here from
178         method-to-ir.c.
179
180         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
181
182 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
183
184         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
185         to tell LLVM that the got is constant, not used yet.
186
187         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
188
189 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
190
191         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
192         managed wrappers.
193
194 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
195
196         * aot-compiler.c (add_wrappers): Commit the hack which generates
197         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
198         custom attribute.
199
200 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
201
202         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
203         a fault, only used by the LLVM backend.
204
205         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
206         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
207
208         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
209         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
210
211         * mini-llvm.c: Only generate volatile loads from load instructions which have
212         the MONO_INST_FAULT flag set.
213
214 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
215
216         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
217         64 bit platforms.
218
219 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
220
221         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
222         sequence points. Fixes #571236.
223
224 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
225
226         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
227         end of the appdomain unload process, after assemblies have been unloaded.
228         Fixes #574842.
229
230 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
231
232         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
233         works.
234
235         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
236         Fixes #573988.
237
238 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
239
240         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
241
242 2010-01-26  Geoff Norton  <gnorton@novell.com>
243
244         * aot-compiler.c: Fix a logic error introduced when guarding against enums
245         with struct marshalability.
246
247 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
248
249         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
250         it supports class names as well.
251
252         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
253         needed by the GC map code.
254
255         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
256         flags if needed.
257
258         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
259         if cfg->init_ref_vars is set.
260
261         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
262         cfg->disable_initlocals_op_refs is set.
263
264         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
265         using liveness info if cfg->compute_precise_live_ranges is set.
266
267         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
268         volatile variables correctly. Add comments about the live ranges. Not enabled
269         yet.
270
271 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
272
273         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
274         0x2a into them in method prologs.
275
276         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
277
278 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
279
280         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
281         classes, since llvm is compiled with -fno-rtti.
282
283         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
284
285         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
286         llvm does not require it.
287
288         * aot-runtime.c (load_method): Print the full name of the last aot method.
289
290 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
291
292         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
293         thread has not fully started yet.
294
295 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
296
297         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
298
299 2010-01-21  Miguel de Icaza  <miguel@novell.com>
300
301         * driver.c: Do not abort if LLVM is not supported, print a
302         warning and add the information to the Mono JIT information.
303
304 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
305
306         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
307         using explicit null checks.
308
309 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
310
311         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
312         related code.
313
314         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
315         () in one place.
316         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
317         its no longer needed.
318
319         * method-to-ir.c (mono_method_to_ir): Fix a warning.
320
321         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
322         define for platforms still using it (s390). Get rid of the
323         mono_arch_get_throw_exception_by_name () routines on all other platforms.
324
325         * exceptions-x86.c: Rework the throw trampolines so there is only one function
326         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
327
328         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
329         the caller pushed the arguments.
330
331         * mini-llvm.c: Enable throwing exceptions on x86.
332
333         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
334         "Thread (nil) may have been prematurely finalized" messages if this is called
335         on a thread not registered with the runtime.
336
337         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
338
339 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
340
341         * jit-icalls.c (mono_array_new_3): New jit icall.
342
343         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
344
345         * arrays.cs: Add a test for 3 dimensional arrays.
346
347 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
348
349         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
350         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
351         used.
352
353         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
354         thrown on x86.
355
356         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
357
358         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
359
360         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
361
362 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
363
364         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
365           HOST_WIN32.  Also including winsock2. to define struct in_addr.
366
367         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
368
369         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
370
371         Code is contributed under MIT/X11 license.
372
373 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
374
375         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
376
377         * branch-opts.c (mono_optimize_branches): Honor the new flag.
378
379         * mini.c (mini_method_compile): Set the new flag when running under the
380         debugger.
381
382 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
383
384         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
385         a ref/noref value + a global pin flag, so parts of stack frames can still be
386         precisely marked even if they include stuff which needs pinning. Improve logging.
387         Fix many bugs. Not enabled yet.
388
389         * gc-test.cs: Add a few tests.
390
391         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
392         the normal -v options. Avoid propagating liveness information through bblocks
393         which end with a NOT_REACHED opcode.
394
395         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
396         after cfg has been freed.
397
398 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
399
400         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
401         if a clause is skipped because it uses the exception object, since it could
402         have caught the exception.
403
404         * exceptions.cs: Add a test.
405
406 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
407
408        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
409
410         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
411         ICollection<T> wrappers.
412
413 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
414
415         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
416
417 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
418
419         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
420         NOMAP32BIT or optimize_for_xen is set.
421
422 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
423
424         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
425         mono_metadata_str_hash () instead.
426
427 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
428
429         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
430         sizeof (void*).
431
432         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
433
434 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
435
436         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
437         flag is set.
438
439         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
440         throwing code correctly.
441
442         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
443
444 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
445
446         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
447         ftnptrs created by us, handle RGCTX_FETCH correctly.
448         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
449
450         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
451         ftnptr added by mono_aot_get_named_code ().
452
453 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
454
455         * mini-arm.c: Fix a few LLVM problems.
456
457         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
458
459 2010-01-13  Mark Probst  <mark.probst@gmail.com>
460
461         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
462         AOT compiling.
463
464 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
465
466         * jit.h, method-to-ir.c: added ability to set the policy for
467         inserting breakpoints from the break IL instruction or the
468         Debugger.Break () API call.
469
470 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
471
472         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
473         assemblies need to be eagerly loaded.
474
475 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
476
477         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
478
479 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
480
481         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
482         an argument which matches any exception.
483
484 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
485
486         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
487         optimization if the called method is gshared and marshalbyref, since gshared
488         methods can' have wrappers. Fixes #569390.
489
490         * generics.cs: Add a test.
491
492 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
493
494         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
495         callable from gdb.
496
497 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
498
499         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
500
501 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
502
503         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
504         since it is not supported in win2000.
505
506 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
507
508         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
509         error if loading an assembly fails.
510         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
511
512         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
513         if exists.
514
515         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
516         compiled methods.
517
518         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
519
520         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
521         is not supported yet.
522
523         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
524
525 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
526
527         * method-to-ir.c: All types with variant arguments must fallback to the
528         slow path. This makes cast of variant delegates work.
529
530         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
531         argument that is set to TRUE is the returned vtable slot is for a variant
532         interface. Changed a g_print + g_assert_not_reached to a g_error.
533
534         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
535         a similar fashion of generic virtual methods.
536
537 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
538
539         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
540         when cfg is null.
541
542         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
543         method using a variance aware function.
544
545         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
546
547 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
548
549         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
550         do an icall for now.
551
552 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
553
554         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
555         If LLVM decides to set the code model to Large, reset it to Default.
556
557 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
558
559         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
560         stripped binaries as well.
561
562 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
563
564         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
565         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
566
567         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
568         reg.
569
570 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
571
572         * mini.c (mini_method_compile): Extract the JIT info creation code into a
573         separate function.
574
575         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
576         as the type info to llvm.eh.selector.
577         (exception_cb): Use the type info for filling out some fields of
578         MonoJitExceptionInfo like the flags and the exception class. This is needed
579         because the LLVM produced exception handling clauses might not match the original
580         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
581
582         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
583         separate function. Add an extra argument which returns the type infos
584         corresponding to the exception clauses.
585
586         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
587         exception handling clauses.
588
589 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
592         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
593         to fix an AOT case.
594
595 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * mini.c (mono_compile_is_broken): Skip methods from serialization's
598         internal assembly.
599
600 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
601
602         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
603         llvm code.
604
605 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
606
607         * mini.c (mini_method_compile): Verify the method before calling
608         mono_compile_create_vars as this might crash since it uses method
609         information.
610
611         Fixes #560196.
612
613 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
614
615         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
616         one case if AOTing, since the class might not be a concrete class.
617
618 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
619
620         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
621         functions which are now defined in mempool-internals.h.
622
623         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
624
625         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
626
627 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * mini.c:
630         * method-to.ir.c:
631         * mini-*.c: Properly handle generic enums.
632
633         Fixes #566294
634
635 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
636
637         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
638         in a few more places.
639
640 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
641
642         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
643         nullable parameters. Fixes #567351.
644
645 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
646
647         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
648
649 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
650
651         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
652         mono_get_generic_context_from_code () call.
653
654         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
655
656 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
657
658         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
659         needed.
660
661 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
662
663         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
664         mono_method_get_signature returns NULL. Fix #567084
665
666 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
667
668         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
669         instead of once for each module.
670
671 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
672
673         * debugger-agent.c (ss_start): Implement step over for the last sequence
674         point in methods.
675
676         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
677         have the STEP_LOC flag set.
678
679         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
680         fails. Fixes #566689.
681
682 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
683
684         * mini.c (mono_add_seq_point): New helper function.
685         (mono_save_seq_point_info): New function to save sequence point info, extracted
686         from mini_method_compile ().
687
688         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
689
690         * mini.h (MonoSeqPointInfo): New structure containing information about
691         the sequence points of a JITted method.
692         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
693         'bucket' field.
694
695         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
696         point information is stored, use a MonoSeqPointInfo structure instead of a
697         GPtrArray. For each seq point, compute a list of successor seq points.
698
699         * debugger-agent.c: Use the successor list to implement step-over more
700         efficiently: instead of single stepping until a different line/IL offset is
701         reached, place breakpoints into all successor seq points.
702
703         * mini.h: Bump AOT file format version.
704
705 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
706
707         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
708
709         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
710
711 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
712
713         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
714         build.
715
716 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
717
718         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
719         alloca as g_malloc is not signal safe.
720
721 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
722
723         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
724         VALGRIND_DISCARD_TRANSLATIONS.
725
726         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
727         checks, they are no longer needed.
728
729         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
730         a function into a sigctx which can handle function pointers.
731
732         * mini-ppc.c: Implement soft debugger support on ppc64.
733
734         * mini-ppc.c: Implement soft debugger support.
735
736 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
737
738         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
739
740 2009-12-17  Marek Habersack  <mhabersack@novell.com>
741
742         * mini.c (mono_get_runtime_build_info): include Mono version in
743         the returned value.
744
745         * driver.c (mono_main): VERSION is now included in the string
746         returned from mono_get_runtime_build_info()
747
748 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
749
750         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
751         signatures. Fixes #565143.
752
753         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
754
755 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
756
757         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
758
759 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
760
761         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
762         making max stack 10x smaller.
763
764 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
765
766         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
767
768 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
769
770         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
771
772 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
773
774         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
775         bigger than MONO_ARCH_MAX_FRAME_SIZE.
776
777         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
778
779         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
780
781         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
782
783         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
784         the compilation.
785
786 2009-12-14  Miguel de Icaza  <miguel@novell.com>
787
788         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
789         raise an invalid program exception.   
790
791         For other opcodes that we might not handle use a g_warning and
792         raise the exception.   Beats termination.
793
794         Fixes #561724
795
796 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
797
798         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
799
800         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
801         by merging the LLVM and !MAP_32BIT cases.
802
803 2009-12-13 Jonathan Chambers <joncham@gmail.com>
804
805         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
806         sigctx being passed in, as we have no CONTEXT available in the APC.
807
808         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
809         for now.
810
811         Code contributed under MIT/X11 license.
812
813 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
814
815         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
816         in the LLVM backend on AMD64.
817
818         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
819         FDE.
820
821         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
822
823         * mini-llvm.c: Export mono_personality for AOT.
824
825         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
826
827         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
828         implicit exception can occur.
829
830         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
831         OP_IMPLICIT_EXCEPTION instruction.
832
833         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
834
835         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
836
837         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
838         inside a protected block.
839
840         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
841         trampolines doesn't include the argument.
842
843         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
844         trampolines on amd64.
845
846         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
847         of RDI.
848
849         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
850         disabled for methods with clauses.
851
852         * mini-llvm.c: Enable support for catch clauses.
853
854         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
855         end of an LLVM compiled finally clause.
856         (mono_handle_exception_internal): Save the exception handling state in TLS
857         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
858         resume unwinding from that point.
859
860         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
861         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
862         to obtain the addresses of the exception handling regions.
863
864         * mini-llvm.c: Add beginnings of support for exception handling, currently only
865         finally clauses are supported.
866
867         * mini.c (mini_method_compile): Add support for LLVM code with exception
868         handlers.
869
870 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
871
872         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
873         proper size.
874
875 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
876
877         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
878         as a primitive type.
879
880 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
881
882         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
883         for 2 parameter sched_setaffinity in older glibc versions. Fixes
884         #564000.
885
886 2009-12-11  Marek Habersack  <mhabersack@novell.com>
887
888         * method-to-ir.c (mini_redirect_call): do not redirect the
889         InternalAllocateStr internal call if string profiling is enabled.
890
891 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
892
893         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
894         generic methods.
895
896         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
897         unwind.h header file.
898
899         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
900         newer valgrind versions seems to handle this fine.
901
902 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
903
904         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
905         on the debugger thread.
906
907 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
908
909         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
910
911         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
912
913         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
914
915         * cpu-<ARCH>.md: Make call_handler clob:c.
916
917         * mini.c: Reenable SSA for methods with clauses.
918
919         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
920         as it causes failures on x86.
921
922 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
923
924         * driver.c: Fail gracefully with --compile-all if mono_method_signature
925         returns NULL (e.g. a bad assembly).
926
927 2009-12-08  Geoff Norton  <gnorton@novell.com>
928
929         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
930         stepping out into native code.  There were issues with nested invokes
931         like .cctors.
932
933 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
934
935         * mini.c (mini_method_compile): Do the disable_llvm checks early
936         and avoid the LLVM compile pass if the checks fail.
937
938         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
939
940         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
941         LLVM optimizations don't try to remove them.
942
943         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
944         different file so the original remains.
945
946 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
947
948         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
949
950         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
951
952         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
953         support for non-inline unwind descriptors.
954
955 2009-12-07  Geoff Norton  <gnorton@novell.com>
956
957         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
958         the interrupt_count slightly differently.  Native threads were never
959         marked as resumed.
960
961 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
962
963         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
964         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
965         yet generate this info.
966
967         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
968
969         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
970         client can distinguish between intptrs and longs.
971
972 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
973
974         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
975         blob.
976
977         * aot-runtime.c (load_function): Update after the change above.
978
979         * mini.h: Bump AOT file format version.
980
981         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
982         if the delegate class is dynamic.
983
984         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
985         in gshared code too using the new rgctx info type
986         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
987
988 2009-12-04  Geoff Norton  <gnorton@novell.com>
989
990         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
991         we need to track the original suspend count so the thread properly
992         wakes up in resume_thread.
993
994 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
995
996         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
997         code.
998
999         * generics.cs: Add a test.
1000
1001         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1002         is 0. Simplify a lot of code using this.
1003
1004         * mini-trampolines.c (mono_delegate_trampoline): Call
1005         mono_create_static_rgctx_trampoline () before saving the final address in
1006         delegate->method_code, to avoid calling it each time a delegate is first called.
1007
1008         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1009         which need static rgctx trampolines.
1010
1011         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1012         keyed on the method+addr pair, since addr could be either the method addr or
1013         an unbox trampoline in the AOT case. Fixes #560246.
1014
1015 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1016
1017         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1018         place it was called before too.
1019
1020 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1023         if no security manager is present, to speed up the AOT case. Call
1024         mono_class_vtable () full with raise_on_error == TRUE instead.
1025
1026 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1029         the local optimization passes can take its result into account. Fixes
1030         #559876.
1031
1032         * exceptions.cs: Add a test.
1033
1034 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1035
1036         This patch is contributed under the terms of the MIT/X11 license
1037
1038         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1039
1040 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1043
1044         * debugger-agent.c: Rework the handling of stack traces of running threads to
1045         avoid crashes if compute_frames () tries to walk the stack of running thread.
1046
1047         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1048
1049         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1050
1051         * mini.h (StackFrameInfo): Add an 'lmf' field.
1052
1053 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * debugger-agent.c (suspend_current): Always set really_suspended.
1056
1057         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1058
1059         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1060
1061 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1064         really suspended.
1065
1066 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1069
1070 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         * mini-trampolines.c: Fix MSVC build.
1073
1074 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1075
1076         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1077
1078 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1081         the instruction following an OP_FCOMPARE is optimized away.
1082
1083 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1086         emit_autoreg () into this arch-specific function.
1087
1088         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1089         code, it is no longer needed.
1090
1091         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1092
1093         * mini.h: Bump AOT file format version.
1094
1095         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1096         using the sorted_code_offsets array, instead of reading it from the
1097         exception debug info.
1098         (load_method): Call mono_aot_find_jit_info instead of
1099         decode_exception_debug_info ().
1100
1101         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1102         LLVM compiled as a flag.
1103
1104 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * debugger-agent.c (resume_thread): Fix a warning.
1107
1108         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1109         generated.
1110
1111 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1114         contents to MonoAotFileInfo.
1115
1116 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1117
1118         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1119         Put all binary data into a giant blob, similarly to the way .net assemblies
1120         store binary data. Emit offset tables in a compact form to reduce their size.
1121
1122         * mini.h: Bump AOT file format version.
1123
1124         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1125         places.
1126
1127         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1128         avoid linear searches at runtime.
1129
1130         * aot-runtime.c (find_symbol): Update this to use the hash.
1131
1132         * mini.h: Bump AOT file format version.
1133
1134 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1137         container.
1138
1139         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1140         too.
1141
1142         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1143         the distribution of got slot types.
1144
1145         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1146
1147         * method-to-ir.c: Add support for generating explicit null checks.
1148
1149 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1150
1151         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1152         on a random thread if possible.
1153
1154         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1155         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1156         correctly.
1157
1158         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1159         regs. Pass the real size of the regs array to mono_unwind_frame ().
1160
1161         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1162         ones instead.
1163
1164 2009-11-24  Geoff Norton  <gnorton@novell.com>
1165
1166         * mini-darwin.c: Work around apple bug rdar://7209349  See
1167         http://openradar.appspot.com/7209349 for details.  Synopsis,
1168         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1169         never been initialized before.
1170
1171 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1174
1175         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1176
1177 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1180         OP_SHL_IMM is not 32 bit.
1181
1182 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1185
1186 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1187
1188         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1189         encountered.
1190
1191         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1192         > 0 since some threads can resume if their resume_count is > 0.
1193         (invoke_method): Avoid reading freed memory.
1194
1195         * debugger-agent.c (process_suspend): Extract the suspend code from
1196         process_single_step_inner () to a separate function. Rework the code to prevent
1197         races between this function and thread interrupts.
1198
1199         * debugger-agent.c (suspend_current): Check the resume_count field instead
1200         of resume_one so suspends+resumes during single threaded invokes work
1201         correctly.
1202
1203 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1206         to make the generated code smaller.
1207
1208         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1209         sequence generated by recent LLVM versions.
1210
1211         * mini-llvm.c: Add support for a few simple cases which weren't supported
1212         before.
1213
1214         * mini-trampolines.c (mono_magic_trampoline): Don't call
1215         mono_arch_get_vcall_slot () when llvm is enabled.
1216
1217         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1218
1219         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1220         into a new function called common_call_trampoline () which is used by the
1221         llvm vcall trampoline as well.
1222
1223         * debugger-agent.c: Implement single threaded invokes.
1224
1225         * debugger-agent.c: Revert change which broke the agent on linux.
1226
1227         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1228         #557606.
1229
1230         * generics.cs: Add a test.
1231
1232 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * debugger-agent.c: Fix the cygwin build.
1235
1236 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * cprop.c: Remove this unused file.
1239
1240 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1243         #557262.
1244
1245         * basic.cs: Add a test.
1246
1247 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1248
1249         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1250         in one more place.
1251
1252 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1255         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1256         it. Use this flag to control llvm related code paths instead of #ifdef
1257         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1258         AOT code.
1259
1260         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1261
1262         * mini.h: Bump AOT file format version.
1263
1264         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1265         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1266
1267         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1268         was used as an assembly filter.
1269
1270 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * unwind.c: Fix support for ppc.
1273
1274         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1275         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1276
1277 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1280         port.
1281         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1282         added by the ps3 changes.
1283
1284 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * mini-gc.c: Resurrect this, so at least it compiles.
1287
1288         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1289
1290 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1293         create_event_list () so assembly filters can be used.
1294
1295         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1296         from the LMF.
1297
1298 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1301         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1302         is disabled.
1303
1304         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1305         classes for char/bool too.
1306
1307         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1308
1309         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1310         used.
1311
1312         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1313         Fix warnings.
1314
1315 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1316
1317         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1318         
1319         Code contributed under MIT/X11 license.
1320
1321 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1322
1323         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1324         threads in native code work.
1325
1326         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1327         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1328         version.
1329
1330 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1331
1332         * debugger-agent.c: Implementation for Windows platform.
1333
1334         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1335         primitives. Use SEH to implement breakpoints and single stepping.
1336
1337         * mini-x86.h: Enable soft debugger on Windows.
1338
1339         Code contributed under MIT/X11 license.
1340
1341 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1344         under XEN. Fixes #522894.
1345
1346         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1347
1348         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1349         interface calls in LLVM AOT code.
1350
1351         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1352         is found.
1353
1354         * mini-llvm.c: Add support for OP_VPHI.
1355
1356         * objects.cs: Add a test.
1357
1358 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1361         this is called on the debugger thread.
1362
1363 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1364
1365         * mini-llvm.c: Add soft-float support.
1366
1367         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1368         FCALL which returns an R4.
1369
1370         * driver.c (mono_main): Add a missing '\n'.
1371
1372         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1373         platforms which doesn't support the LLVM IMT trampoline.
1374
1375 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1376
1377         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1378
1379         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1380
1381         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1382         virtual calls.
1383
1384         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1385
1386 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1389         Instead of emitting a method_order table, sort the contents of the code_offsets
1390         table and do a binary search in the sorted table. The previous approach doesn't
1391         work with LLVM which emits methods in a arbitrary order.
1392
1393         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1394         in the .eh_frame section in ELF files.
1395
1396         * mini.h: Bump corlib file format version.
1397
1398         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1399
1400         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1401         LDMIA->LDM macro name change.
1402
1403 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1406         x86.
1407
1408         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1409         SVN.
1410
1411         * aot-compiler.c: Ditto.
1412
1413         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1414         &align to mini_type_stack_size_full ().
1415
1416         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1417
1418         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1419
1420 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * mini-arm.c: Compute the stack space used by arguments using
1423         mini_type_stack_size_full ().
1424
1425 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * optflags-def.h: Remove dead TREEPROP optimization.
1428
1429 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1430
1431         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1432
1433         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1434
1435 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1436
1437         * driver.c (mono_jit_parse_options): New public API function to parse options
1438         as done by the runtime executable.
1439
1440         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1441         when handling named arguments.
1442
1443 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1444
1445         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1446         for passing small vtypes in registers, make the CallInfo structures more
1447         similar to the code on the other platforms.
1448
1449         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1450         the code in the prolog requires it.
1451
1452 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1455         (koush@koushikdutta.com).
1456
1457         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1458         where the thunk memory should be allocated from. Fixes appdomain unloading
1459         on arm.
1460
1461 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1462
1463         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1464         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1465
1466 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1469         AOT, as it is not implemented yet.
1470
1471         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1472
1473 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * debugger-agent.c: Fix windows build.
1476
1477 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1478
1479         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1480         after the client connects/disconnects.
1481
1482         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1483         when an exception of a given type is thrown.
1484
1485         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1486         only on an uncaught exception.
1487
1488         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1489
1490         * debugger-agent.c: Add a 'launch' option.
1491
1492 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * debugger-agent.c: Add a 'timeout' option.
1495
1496 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1499         the JDWP agent.
1500
1501 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1502
1503         * debugger-agent.c (set_breakpoint): Emit a log message.
1504
1505 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * mini-arm.c: Fix the arm build.
1508
1509 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1510
1511         * aot-compiler.c: don't leak the value returned from
1512         mono_type_full_name().
1513
1514 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1515
1516         * debugger-agent.c: defer including mono-mutex.h until we know the
1517         agent is supported.
1518
1519 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1520
1521         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1522         of pthreads directly.
1523
1524         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1525         exception handlers. Pass info argument.
1526
1527         * mini.h: Adjust signatures of soft debugger functions to pass void*
1528         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1529
1530         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1531         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1532         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1533         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1534
1535         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1536
1537         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1538         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1539         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1540         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1541
1542         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1543
1544         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1545
1546         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1547
1548         * mono-semaphore.h: Skeleton implementation for Windows.
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): Unfix my fix.
1555
1556         Code contributed under MIT/X11 license.
1557
1558 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1559
1560         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1561
1562         Code contributed under MIT/X11 license.
1563
1564 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1567         debug info to 100 because 10 still slows down gdb too much.
1568
1569         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1570         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1571         them in the wrappers.
1572
1573 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1576
1577         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1578
1579         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1580         function mono_aot_get_array_helper_from_wrapper ().
1581
1582         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1583         array helper methods.
1584
1585 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1586
1587         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1588         the value was loaded from memory.
1589
1590         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1591         the value was loader from there.
1592
1593         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1594         without constant swizzle.
1595
1596 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1597
1598         * mini-amd64.c: Put soft debugger functions behind a
1599         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1600
1601         * mini-amd64.h: disable the soft debugger in windows.
1602
1603         Code contributed under MIT/X11 license.
1604
1605 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1606
1607         * mini-x86.c: Put soft debugger functions behind a
1608         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1609
1610         Code contributed under MIT/X11 license.
1611
1612 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1613
1614         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1615         to mono_arch_find_jit_info_ext.
1616
1617         Code contributed under MIT/X11 license.
1618
1619 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1622
1623         * debugger-agent.c: Add support for filtering events by assemblies.
1624
1625         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1626         the agent is not enabled.
1627
1628 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1629
1630         * exceptions-x86.c: hopefully last change to fix the windows build.
1631         This one courtesy of Jonathan Chambers.
1632
1633 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1634
1635         * debugger-agent.c: remove unused function.
1636
1637 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1638
1639         * debugger-agent.c: add #ifdefs for a few header files.
1640         * mini-x86.h: disable the soft debugger in windows.
1641         Step 1 of 2 to make this compile on windows with gcc.
1642
1643 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1646         as it breaks the build.
1647
1648 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1649
1650         Merge the soft debugger branch.
1651
1652         * debugger-agent.h debugger-agent.c: New files containing the soft
1653         mode debugger module.
1654
1655         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1656         at the appropriate locations.
1657
1658         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1659         opcode.
1660
1661         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1662         enable/disable single stepping.
1663
1664         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1665         which returns all information in a StackFrameInfo structure, and can handle the
1666         LMF frames added by the debugger.
1667
1668         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1669         about an LMF frame.
1670
1671         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1672         walker function which works on a specific thread and passes a StackFrameInfo
1673         structure to its callback.
1674
1675         * mini.c (mini_init): Initialize the debugger agent.
1676
1677         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1678
1679         * mini-ops.h: Add OP_SEQ_POINT opcode.
1680
1681         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1682         arguments to the debugger agent.
1683
1684 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1687         speed things up.
1688
1689         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1690
1691         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1692
1693         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1694
1695         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1696         if needed.
1697         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1698         sets the IMT argument and makes a virtual call.
1699
1700         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1701
1702 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1705         the windows build.
1706
1707 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1710         runtime. Fixes #551228.
1711
1712 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1715
1716         * basic.cs: Add a test.
1717
1718         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1719         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1720         CONSTRAINED. Fixes #550964.
1721
1722         * generics.cs: Add a test.
1723
1724 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1725
1726         * mini-posix.c (add_signal_handler): Use
1727         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1728
1729 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1730
1731         Contributed under the terms of the MIT/X11 license by
1732         Jerry Maine <crashfourit@gail.com>.
1733
1734         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1735         sse4a for simd intrinsics.
1736
1737         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1738         sse4a for simd intrinsics.
1739
1740 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1743         instead of inst_p1 which is not the same on ILP32 platforms.
1744
1745 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1748         not the mscorlib one before calling mono_get_lmf_addr.
1749
1750         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1751         of the ip to the LMF.
1752
1753         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1754         immediate in the op->op_imm optimization.
1755
1756         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1757         understand. VTypes now work, but are not abi compliant, as they are
1758         split into 4 byte parts instead of 8.
1759         (emit_memcpy): Fix the unrolled case to work on the PS3.
1760
1761         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1762
1763         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1764         the default when static linking.
1765
1766         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1767
1768         * aot-compiler.c: Add an autoreg option to automatically register
1769         statically linked aot modules using ELF .ctors.
1770
1771         * genmdesc.pl: Add __ppc64__ to allowed defines.
1772
1773 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1776         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1777
1778 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1779
1780         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1781
1782 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1785         which will contain the domain where the method was found.
1786
1787         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1788         mini_jit_info_table_find ().
1789
1790         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1791
1792         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1793
1794 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1797         set, its not supported yet.
1798
1799 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1802         iface wrapper is not found.
1803         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1804
1805 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1808         which have a different name.
1809
1810         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1811         wrappers and Array.GetGenericValueImpl ().
1812
1813         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1814         because of the change above.
1815
1816         * generics.cs: Add a test for full aot + generic array ifaces.
1817
1818 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1819
1820         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1821         that hides the previous one.
1822
1823 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1826         marshalled. Fixes #541623.
1827
1828 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1831
1832 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1835
1836 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1837
1838         * mini-posix.c (sigprof_signal_handler):
1839         Implemented support for building stat call chans in different ways.
1840
1841 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1842
1843         * mini-exceptions.c (mono_find_jit_info):
1844         Also check that a jit info has been found (fixes a profiler crash).
1845
1846 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1847
1848         * mini.c (mono_codegen):
1849         Call mono_profiler_code_buffer_new with correct code address.
1850
1851 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * driver.c (mono_main): Change the date in the copyright.
1854
1855 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1856
1857         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1858         allocator in shared generic code for open classes, because we
1859         can't get those classes' vtables.  We need to make managed
1860         allocators not depend on the vtable at compile-time to solve this.
1861
1862 2009-10-13  Martin Baulig  <martin@ximian.com>
1863
1864         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1865         `const guint8 *trampoline' argument; send both the old and the new
1866         notification.
1867
1868 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1871         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1872         (can_marshal_struct): Skip structures with auto layout.
1873
1874         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1875
1876 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1879         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1880         a variable to hold the stack slot used by the int<->float conversion opcodes.
1881
1882         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1883
1884 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1887         when using full-aot.
1888
1889 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1892         each instance of Comparer<T>.
1893
1894         * generics.cs: Add a new test.
1895
1896 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * driver.c (parse_debug_options): Add a 'gdb' option.
1899
1900         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1901
1902         * image-writer.c: Add support for emitting the image into a memory buffer.
1903
1904         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1905
1906         * aot-compiler.c: Add support for registering debug info with GDB using the
1907         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1908         MONO_XDEBUG to 'gdb'.
1909
1910 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1913         gdb mode.
1914
1915 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1918         can be used to set breakpoints in gdb.
1919
1920         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1921         segment to an absolute address.
1922
1923 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1924
1925         * method-to-ir.c: Use the managed array allocator method if
1926         available.
1927
1928 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1929
1930         * aot-compiler.c : Fix the MSVC builds
1931
1932         Code is contributed under MIT/X11 license.
1933
1934 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1937         avoid registering 1 symbol file per method with gdb.
1938
1939 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * mini-sparc.c: Fix the handling of enums with base type long.
1942
1943         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1944
1945         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1946         instead of using type->data.klass as the later doesn't work with generics.
1947
1948 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1949
1950         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1951         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1952         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1953         works differently now and we don't handle it in the JIT anymore.
1954
1955         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1956         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1957         the Thread class split.
1958
1959 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * driver.c: Don't run tests with the obsolete treeprop optimization.
1962
1963         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1964         variable volatile. Fixes #541577.
1965
1966         * basic-calls.cs: Add a new test.
1967
1968         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1969
1970 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1973         work/required with recent iphone sdk versions.
1974
1975         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1976         structures.
1977
1978         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1979         in the VCALL decomposition code.
1980
1981 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1984
1985         * basic.cs: Add a test.
1986
1987         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1988         generic invokes.
1989
1990         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1991         searches all the domains of the current thread.
1992
1993         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1994
1995 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1998         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1999
2000         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2001         for non-jit trampolines.
2002
2003         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2004
2005         * aot-compiler.c (add_wrappers): Ditto.
2006
2007         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2008         the size of the param area used by dyn_call to 6 which covers the majority of
2009         methods.
2010
2011         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2012
2013         * mini-arm.c: Implement support for passing/receiving
2014         longs and receiving floats in the dyn_call code.
2015
2016         * mini-amd64.c: Implement support for receiving vtypes in registers in
2017         the dyn_call code.
2018
2019         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2020         the dyn_call code.
2021
2022 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-arm.c (get_call_info): Return more precise information in
2025         ArgInfo->regtype.
2026         (dyn_call_supported): Use the information in CallInfo.
2027
2028         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2029
2030         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2031         code.
2032
2033         * mini-arm.c: Update after the dyn_call api changes.
2034
2035         * mini.c (mini_create_jit_domain_info): Register a destructor function
2036         for the runtime_invoke_hash.
2037
2038         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2039         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2040         this function.
2041         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2042         (dyn_call_supported): Simplify this by using get_call_info ().
2043         (mono_arch_dyn_call_free): New destructor function.
2044
2045         * generics.cs: Remove a printf.
2046
2047         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2048
2049         * mini-arm.c: Add support for enum return values and passing a few arguments
2050         on the stack.
2051         
2052         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2053         dyn invoke.
2054
2055         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2056
2057         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2058         the dynamic invoke wrappers.
2059
2060         * mini-arm.c: Implement OP_DYN_CALL for arm.
2061
2062         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2063         supported by the dynamic runtime invoke wrapper.
2064
2065         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2066         runtime invoke wrapper.
2067
2068         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2069         if possible when running with full-aot.
2070
2071         * mini-ops.h: Add OP_DYN_CALL opcode.
2072
2073         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2074         with dynamic arguments lists similar to libffi.
2075
2076 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2079         
2080         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2081         to NEWARR.
2082
2083         * iltests.il.in: Add a new test.
2084         
2085 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * aot-compiler.c (add_generic_instances): Add more instances of
2088         GenericEqualityComparer.
2089
2090 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2091
2092         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2093
2094 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2095
2096         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2097         comments on some functions that now can fail.
2098
2099 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2100
2101         * Makefile.am: Add Info.plist to EXTRA_DIST
2102
2103 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2106         static synchronized wrappers. Fixes #539500.
2107
2108 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2109
2110         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2111         properly.
2112
2113 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2116         lmf before calling filter clauses as well. Fixes #539550.
2117
2118         * exceptions.cs: Add a test.
2119         
2120 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * aot-compiler.c (add_generic_class): Add instances of
2123         Array.GetGenericValueImpl as well.
2124
2125         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2126         can be tested too.
2127
2128         * generics.cs: Add a fullaot linq test.
2129
2130 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2133         reg r1 on arm.
2134
2135 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2136
2137         * mini-trampolines.c (mono_delegate_trampoline) : Call
2138           mono_cominterop_get_invoke if the delegate target object
2139           is a COM object.
2140
2141         Code is contributed under MIT/X11 license.
2142
2143 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2144
2145         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2146         internal call is defined outside platform code. Reduce code 
2147         duplication with existing [Method|Field]AccessException
2148
2149 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2150
2151         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2152         if the return value is a small struct passed on regs.
2153
2154 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2157
2158         * mini-codegen.c: Enable the cpu description validation for arm.
2159
2160 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2163         test which depends on structs to objects.cs.
2164         
2165         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2166         require object model related stuff working.
2167
2168         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2169
2170         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2171
2172         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2173         against the instruction metadata in mini-ops.h. amd64 only for now.
2174
2175         * mini-ops.h: Fix some instruction descriptions.
2176
2177         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2178         unused instructions.
2179
2180 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * exceptions.cs: Add a new test.
2183
2184 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2185
2186         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2187
2188 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2191         skip empty phi opcodes.
2192         
2193         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2194         correctly by zero extending after loads. Skip methods containing calls
2195         to the monitor enter/exit trampolines.
2196
2197         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2198         when calling mono_thread_force_interruption_checkpoint ().
2199
2200         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2201
2202         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2203         64 bit thunks.
2204         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2205
2206         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2207         bootstrap could run.
2208
2209 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2212
2213 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2216         of the method to
2217         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2218         LLVM might be very short.
2219
2220         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2221         in OP_THROW/RETHROW.
2222
2223         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2224         alignment on osx.
2225
2226 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2227
2228         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2229         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2230         LLVM might be very short.
2231
2232 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2235         the alignment for the value of sp.
2236
2237 2009-09-01  Geoff Norton  <gnorton@novell.com>
2238
2239         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2240         managed wrappers in full aot.
2241
2242 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2245
2246 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2249
2250 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2253
2254         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2255         saved info.
2256
2257         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2258
2259         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2260         depend on the info MonoMethodHeader which could be missing in IL stripped
2261         assemblies.
2262
2263 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2266         they are only 4 byte aligned.
2267
2268 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2271         was done previously, since using SP causes too many problems.
2272
2273         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2274         frames without a frame pointer works.
2275
2276         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2277         global register in methods with calls, since the calls can go through
2278         a static rgctx trampoline which doesn't save it.
2279
2280 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2283
2284 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2285
2286         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2287
2288 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2289
2290         * method-to-ir.c: Fix warnings for uninitialized variables.
2291
2292 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2293
2294         * mini-exceptions.c:
2295         * aot-compiler.c: Fix printf warnings.
2296
2297 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2300         Add GetGenericValueImpl<string>.
2301         
2302         * aot-compiler.c (add_generic_instances): Add instances of
2303         GenericEqualityComparer<T> for primitive types. Only emit the array
2304         wrappers into the mscorlib image.
2305
2306 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2309         the methods_loaded array using amodule->info->nmethods.
2310
2311         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2312         (MONO_AOT_FILE_VERSION): Bump this.
2313
2314         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2315         to work.
2316
2317         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2318         MonoJitInfo doesn't belong to its methods aot image.
2319
2320 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2323
2324         * mini-arm.c: Fix warnings.
2325         
2326         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2327
2328         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2329         supports it.
2330
2331 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2334         avoid clobbering IP.
2335
2336         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2337         hold the trampoline argument, so its initial value is available during
2338         debugging.
2339
2340 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2341
2342         * exceptions-arm.c:
2343         * exceptions-hppa.c:
2344         * mini.c:
2345         * exceptions-s390x.c:
2346         * exceptions-mips.c:
2347         * exceptions-ppc.c:
2348         * exceptions-sparc.c:
2349         * exceptions-alpha.c:
2350         * aot-runtime.c:
2351         * mini-trampolines.c:
2352         * exceptions-x86.c:
2353         * exceptions-s390.c: add and use #define's instead of sizeof()
2354         for MonoJitInfo and MonoJitInfoTable.
2355
2356 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2357
2358         * tramp-arm.c:
2359         * tramp-amd64.c:
2360         * tramp-ppc.c:
2361         * tramp-x86.c: use a #define instead of sizeof() for a few
2362         structures that use a zero-length array.
2363
2364 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2365
2366         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2367         case when the method is dynamic. Fixes #529238.
2368
2369 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2372         of asserting when a method is JIT compiled in full-aot mode.
2373
2374 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2375         
2376         Contributed under the terms of the MIT/X11 license by
2377         Jerry Maine <crashfourit@gail.com>.
2378         
2379         * fixed wrong dates in changelog.
2380
2381 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2382         
2383         Contributed under the terms of the MIT/X11 license by
2384         Jerry Maine <crashfourit@gail.com>.
2385
2386         * basic-simd.cs: added test for packed double square root.
2387         * cpu-amd64.md: added opcode info for packed double square root.
2388         * cpu-x86.md: added opcode info for packed double square root.
2389         * mini-ops.h: added IR opcode for packed double square root.
2390         * mini-x86.c: added IR to native translation code for packed double square root.
2391         * mini-amd64.c: removed todo for packed double square root.
2392         * simd-intrinsics.c: added method to IR opcode converstion for
2393         packed double square root.
2394
2395 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2396
2397         Contributed under the terms of the MIT/X11 license by
2398         Jerry Maine <crashfourit@gail.com>.
2399
2400         * mini-amd64.c: Added a change to help tell the difference as 
2401         to what perpose the xmm register is being used--mainly to help
2402         with debuging.
2403         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2404         (one used for special cases) xmm registers for both fp
2405         and simd ops. Added define to turn on new feature in the regalloc
2406         that allows fp and simd ops to share the xmm regs happily.
2407         * codegen.c: Added code to detect for which perpose an xmm reg is
2408         being used (fp or simd) and to translate back and forth to the
2409         correct logical reg bank (fp or simd) for 'spill load's.
2410
2411 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2412
2413         Contributed under the terms of the MIT/X11 license by
2414         Jerry Maine <crashfourit@gail.com>.
2415
2416         * basic-simd.cs: Added tests for stressing the regalloc when running with
2417         16 simd regs and when simd and fp ops share the same reg bank.
2418
2419 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2420
2421         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2422         in shared generic code, we might have to look up the class in the
2423         RGCTX.  If we use the class directly, compute its GC descriptor.
2424
2425 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2426
2427         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2428
2429 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2430
2431         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2432         check for errors. Fixed the case when the class with the Main
2433         method is broken.
2434
2435 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2436
2437         Contributed under the terms of the MIT/X11 license by
2438         Jerry Maine <crashfourit@gail.com>.
2439
2440         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2441
2442 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2445
2446 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         * method-to-ir.c: Fix naming of stelem and ldelem.
2449
2450 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * driver.c (main_thread_handler): Check that the assembly loaded
2453         matches the filename when doing AOT.
2454
2455 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2456
2457         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2458         call it anymore.
2459
2460         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2461         utils/mono-sigcontext.h).
2462
2463         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2464         #ifdef.
2465
2466 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2467
2468         * mini.c (mono_codegen):
2469         Call profiler hook to keep track of method code buffers.
2470
2471 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2472
2473         * method-to-ir.c: Invoke write barriers for the
2474         Interlocked.(Compare)Exchange JIT intrinsics.
2475
2476 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2477
2478         * Makefile.am (version.h): Fix issues when built out of tree.
2479         Remove some redundant 'grep's piped through 'sed's.
2480
2481 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2482
2483         This patch is contributed under the terms of the MIT/X11 license
2484
2485         * mini-ppc.c (mono_arch_output_basic_block):
2486         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2487         for bits 32-47 with signed load/store diplacements for bits
2488         48-63.  Use prefered base/offset order for indexed form.
2489         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2490         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2491         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2492         OP_LOADI2_MEMBASE): Same.
2493         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2494         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2495         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2496         indexed form.
2497         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2498         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2499         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2500         OP_LOADI1_MEMINDEX): Same
2501         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2502         OP_STORER8_MEMINDEX): Same
2503         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2504         computations.
2505         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2506         for bits 32-47 with signed load/store diplacements for bits
2507         48-63.  Use prefered base/offset order for indexed form.
2508
2509 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2510
2511 This patch is contributed under the terms of the MIT/X11 license
2512
2513         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2514         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2515         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2516         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2517         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2518         cfg->stack_usage to avoid size warnings.
2519         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2520         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2521         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2522         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2523         to convert.
2524         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2525         after code varible is initialized.
2526         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2527         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2528         (mono_arch_emit_epilog): 
2529         Move Use ppc_load32 for cfg->stack_usage to avoid size
2530         warnings.
2531
2532 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2533
2534         * method-to-ir.c: The write barrier doesn't do the store anymore,
2535         so we have always to emit it.  Also, emit the wbarrier after the
2536         store.
2537
2538 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2541         for argument count 3 too.
2542
2543 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2546         the caller handle the exceptions.
2547         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2548         method. Fixes #524498.
2549
2550 2009-07-22  Geoff Norton  <gnorton@novell.com>
2551
2552         * mini-exceptions.c: Fix build on ia64.
2553
2554 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2555
2556         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2557         barriers.
2558
2559 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2562         code.
2563
2564 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * basic-simd.cs (Main): Pass args to the test driver.
2567
2568 2009-07-20  Geoff Norton  <gnorton@novell.com>
2569
2570         * mini-x86.h: Fix the x86 version guards to use Apple's
2571         properly defined macros.
2572
2573 2009-07-20  Geoff Norton  <gnorton@novell.com>
2574
2575         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2576         aligned access.
2577
2578 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2581         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2582         the information which is needed for invokes, so only one locking+hash table
2583         lookup is needed.
2584
2585         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2586         
2587         * aot-compiler.c (add_generic_instances): Emit instances of 
2588         GenericComparer<T> for primitive types.
2589
2590 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * mini-posix.c: Fix linux build.
2593
2594 2009-07-19  Geoff Norton  <gnorton@novell.com>
2595
2596         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2597         mono_gdb_render_native_backtraces
2598         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2599         so we implement the sane semantics to the runtime here
2600         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2601         so we need to call it differently (mono_gdb_render_native_backtraces)
2602         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2603         here for default implementations.
2604         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2605         support Apple's weird syscall (SYS_fork) implementation and not busy
2606         loop in abort() on native crashes on OSX anymore.
2607
2608 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * aot-runtime.c (load_method): Change the handling of the
2611         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2612         are used.
2613
2614         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2615
2616 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2619         seems to break the aot tests.
2620         
2621         * mini.c (mono_patch_info_equal): Fix the handling of 
2622         MONO_PATCH_INFO_RGCTX_FETCH.
2623
2624 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2625
2626         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2627
2628         * mini.c (mono_patch_info_hash): Fix the handling of 
2629         MONO_PATCH_INFO_INTERNAL_METHOD.
2630         (mono_patch_info_equal): Ditto.
2631
2632 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2635         in a few places.
2636         
2637         * mini-llvm.c: Add some infrastructure for AOT support.
2638
2639 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini-llvm-cpp.c: Update to the latest llvm api.
2642         
2643         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2644         option to false to prevent llvm from installing signal handlers which
2645         trip up the gc.
2646         
2647 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2648
2649         * cpu-x86.md:
2650         * cpu-amd64.md: Revert previous change as those instructions
2651         take 2 separate arguments. Remember to read the arch docs more
2652         carefully next time.
2653
2654 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2655
2656         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2657
2658 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2659
2660         * mini-ppc.c: exploit multiple load/store units if available (rest of
2661         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2662         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2663
2664 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2665
2666         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2667         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2668
2669 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2670
2671         * cpu-x86.md: Fix missing clobbering from trancendental simd
2672         ops.
2673
2674         * cpu-amd64.md: Same.
2675
2676 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2677
2678         Contributed under the terms of the MIT/X11 license by
2679         Jerry Maine <crashfourit@gail.com>.
2680
2681         * basic-simd.cs: Added tests for single and doulble indexers.
2682
2683         * cpu-amd64.md: Added simd opcode information.
2684
2685         * mini-amd64.c: Added IR to native simd generation code.
2686         Added simd register names and function that returns them.
2687
2688         * mini-amd64.h: Added marcos to turn on simd code compilation in
2689         amd64. Added max simd register count marco. Added caller/callee
2690         register mask marcos. Added marcos to use simd register bank.
2691
2692         * mini.h: Added helper marco for shufling dwords and simple
2693         floats.
2694
2695 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2698
2699         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2700
2701         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2702         the length of the native code as well.
2703
2704         * basic-simd.cs: Add a test for #521662.
2705
2706 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2707
2708         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2709
2710 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2711
2712         * mini.c: Register function for getting the IP from a signal
2713         context with metadata.
2714
2715 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2718         call a generic class init trampoline if needed. Fixes #519336.
2719
2720         * generics.cs: Add a test.
2721         
2722 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2723
2724         * method-to-ir.c: When doing a call which might be remote from
2725         shared generic code to other shared code with open type arguments,
2726         get the remoting invoke wrapper from the RGCTX and do an indirect
2727         call to it.
2728
2729 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2732         after the unbox trampoline in the full-aot case.
2733
2734 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2735         
2736         * mini.c: Move initialization of jit_mutex before debugger initialization
2737         
2738         to avoid crashes.
2739         
2740         
2741         * Info.plist: added Info.plist and link flag to enable the mono executable
2742         to access other processes. Requires codesigning of the executable to work.
2743         
2744         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2745         
2746         compile on OS X.
2747         
2748
2749 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2752
2753 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2756         when the generic instance is an instantiation of a subclass of the
2757         methods class. Fixes #517166.
2758
2759 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2760
2761         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2762         code.
2763
2764         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2765         AOTed code.
2766
2767         * CMakeLists.txt: Add minimal support for installation.
2768
2769 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2772         determine whenever a method is directly callable to a separate function.
2773
2774         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2775         needed ones as a result of the previous change.
2776
2777         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2778         type of register arrays.
2779
2780         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2781         type of register arrays.
2782
2783 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2784         
2785         Contributed under the terms of the MIT/X11 license by
2786         Jerry Maine <crashfourit@gail.com>.
2787
2788         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2789
2790 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2793
2794 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2795
2796         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2797         dump of structure return value. Fix some formatting.
2798         * cpu-s390x.md: Fix lengths of instruction sequences.
2799         * mini-s390.c: Minor formatting changes.
2800
2801 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2804         Use sigaction on freebsd as well.
2805
2806 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2807
2808         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2809         uses #ifdef on it.
2810         
2811         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2812
2813 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2814
2815         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2816
2817 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2818
2819         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2820
2821 2009-06-20  Martin Baulig  <martin@ximian.com>
2822
2823         * debug-mini.c
2824         (MonoDebuggerThreadFlags): New enum typedef.
2825         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2826         (mono_debugger_thread_created): Added `gpointer func' argument;
2827         initialize the new `thread_flags' field.
2828
2829 2009-06-18  Martin Baulig  <martin@ximian.com>
2830
2831         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2832         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2833
2834         * debug-debugger.c
2835         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2836         flag in `MONO_DEBUGGER__info.runtime_info'.
2837
2838         * driver.c
2839         (mono_main): Call mini_debugger_set_attach_ok() if generics
2840         sharing is disabled.
2841
2842 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * aot-compiler.c (add_wrappers): Fix a warning.
2845
2846         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2847         the ppc load/store macro changes.
2848
2849 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2852
2853         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2854         not just the got symbol.
2855
2856         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2857         on ppc.
2858
2859         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2860         ppc.
2861         
2862         * aot-compiler.c: Remove some fixmes.
2863
2864         * driver.c (mono_main): Print a helpful message when cross-compiling.
2865
2866         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2867
2868         * method-to-ir.c (initialize_array_data): Do the optimization if the
2869         target byte order is little endian, instead of the host byte order.
2870
2871         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2872         wrappers into the mscorlib image, Emit a unique plt symbol for each
2873         image, emit symbols for plt entries.
2874
2875         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2876         a .size directive.
2877         
2878 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * aot-compiler.c (add_wrappers): Avoid calling 
2881         mono_marshal_get_type_info () since it can assert for some types.
2882
2883         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2884         ldtoken are used inside wrappers.
2885
2886         * helpers.c: Add support for prefixing tools with the arch name.
2887
2888         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2889         quantities when using ilp32.
2890
2891         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2892         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2893
2894         * image-writer.c: Use .long on ilp32.
2895
2896         * aot-compiler.c: Use 32 bit loads on ilp32.
2897         
2898 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2901
2902         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2903
2904         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2905
2906         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2907         second got slot of every aot image.
2908         
2909         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2910         aot on platforms with function pointers.
2911
2912         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2913         support for aot/full aot on ppc/ppc64.
2914         
2915         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2916         arguments which are needed on ppc.
2917
2918         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2919         argument.
2920
2921         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2922         
2923         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2924
2925         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2926
2927         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2928
2929         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2930
2931 2009-06-17  Geoff Norton  <gnorton@novell.com>
2932
2933         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2934
2935 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2938         to control whenever the dwarf writer is in xdebug or aot mode.
2939         (emit_class_dwarf_info): Use a separate abbrev for structures without
2940         children.
2941
2942         * aot-compiler.c: Pass the appending parameter to 
2943         mono_dwarf_writer_create ().
2944
2945         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2946         falls through to its next bblock. Fixes #513931.
2947
2948         * iltests.il: Add a test.
2949
2950         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2951         infor even if emit_line is FALSE, as the apple linker seems to require it.
2952
2953         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2954
2955         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2956         gcc does.
2957         (emit_fde): Ditto.
2958
2959 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2960
2961         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2962         mips build.
2963
2964 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2967         'has_call_handler' fields.
2968
2969         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2970
2971         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2972         first bblock if not needed. Fixes #512790.
2973         
2974 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2977         
2978         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2979         wrappers.
2980
2981         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2982         remoting-invoke-with-check wrappers, which are not needed when running with
2983         full-aot, since it doesn't support remoting.
2984         
2985 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2988
2989         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2990         method info, it is not used anymore.
2991
2992         * mini.h: Bump AOT file format version.
2993         
2994         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2995         word smaller.
2996
2997         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2998         change above.
2999         
3000         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3001
3002         * mini.h: Bump AOT file format version.
3003         
3004 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3005
3006         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3007         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3008         iphone.
3009
3010         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3011         of CKFINITE and FBGE for VFP.
3012
3013 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3014
3015         * aot-compiler.c: Don't align code to 16 bytes on arm.
3016         
3017         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3018         before the methods they belong to.
3019
3020         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3021         the full-aot case if possible, since the trampoline will be called right 
3022         away.
3023
3024         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3025         trampolines to 1024 after the change above.
3026
3027         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3028         trampoline to save 8 bytes per trampoline.
3029
3030         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3031         change above.
3032
3033 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3036
3037 2009-06-08  Martin Baulig  <martin@ximian.com>
3038
3039         * debug-mini.c
3040         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3041         (_mono_debugger_throw_exception): Don't make this static.
3042         (_mono_debugger_unhandled_exception): Likewise.
3043         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3044
3045         * debug-mini.c
3046         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3047         (_mono_debugger_throw_exception): Add function prototype.
3048         (_mono_debugger_unhandled_exception): Likewise.
3049
3050         * mini-exceptions.c
3051         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3052         arg; return the first exception handler if the exception is caught
3053         and we're running inside the debugger.
3054         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3055         improve exception handle inside runtime-invoke, check whether the
3056         exception is actually caught in the method being invoked and not
3057         by the runtime-invoke-wrapper.
3058
3059 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * image-writer.c: Improve support for the osx assembler.
3062
3063         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3064         support them.
3065
3066 2009-06-08  Martin Baulig  <martin@ximian.com>
3067
3068         * debug-mini.c
3069         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3070         (_mono_debugger_throw_exception): Don't make this static.
3071         (_mono_debugger_unhandled_exception): Likewise.
3072         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3073
3074         * debug-mini.c
3075         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3076         (_mono_debugger_throw_exception): Add function prototype.
3077         (_mono_debugger_unhandled_exception): Likewise.
3078
3079         * mini-exceptions.c
3080         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3081         arg; return the first exception handler if the exception is caught
3082         and we're running inside the debugger.
3083         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3084         improve exception handle inside runtime-invoke, check whether the
3085         exception is actually caught in the method being invoked and not
3086         by the runtime-invoke-wrapper.
3087
3088 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * image-writer.c (append_subsection): Don't align subsections of the
3091         debug_line section as a workaround.
3092
3093         * dwarfwriter.c: Emit line number info in the AOT case as well.
3094
3095 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3096
3097         This patch is contributed under the terms of the MIT/X11 license
3098
3099        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3100        code_len <= code_size
3101
3102 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3105
3106 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3109         invoke wrappers, we now use trampolines instead.
3110
3111 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3112
3113         * mini-darwin.c: The exception thread must not be registered with
3114         the GC.
3115
3116 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3117
3118         * mini-gc.c: Disable the code because it makes SGen crash.
3119
3120 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3123         instead of asserting.
3124
3125 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3128         output file after the code has been compiled.
3129
3130 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3133
3134 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3137         entries distinction to simplify the code.
3138
3139         * mini.h: Bump AOT file format version.
3140         
3141 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * objects.cs: Fix the signature of one of the tests.
3144
3145         * mini.c (mini_create_ftnptr): New helper function, moved here from
3146         object.c.
3147         (mini_get_addr_from_ftnptr): Ditto.
3148         (mini_init): Install the new helpers.
3149
3150 2009-05-28  Martin Baulig  <martin@ximian.com>
3151
3152         Correctly initialize the debugger when embedding Mono.
3153
3154         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3155         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3156         see documentation in mini_debug_running_inside_mdb().
3157
3158         * debug-debugger.c
3159         (mini_debug_running_inside_mdb): New function to check whether
3160         we're running inside mdb.
3161
3162         * mini.c (mini_init): Call mini_debugger_init() if we're running
3163         inside the debugger.
3164
3165         * driver.c (mono_main): Moved the call to mini_debugger_init()
3166         into mini_init() to make this work when embedding Mono.
3167
3168         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3169         calls to mini_debugger_init().
3170
3171         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3172         mono_debugger_main() -> mini_debugger_main() and put them inside a
3173         `MONO_DEBUGGER_SUPPORTED' conditional.
3174
3175 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3178         this is no longer in use.
3179         * mini.h: Same.
3180
3181 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3184
3185         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3186         methods.
3187
3188 2009-05-27  Martin Baulig  <martin@ximian.com>
3189
3190 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3191
3192         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3193         long_conv_to_r_un to 64 bits.
3194
3195         * cpu-x86.md: Increase the instruction size due to the changes.
3196
3197         * iltests.il.in: Add regression test.
3198
3199         Fixes #467201.
3200
3201 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * objects.cs: Move the previous test from basic.cs to here.
3204
3205 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3206
3207         * basic.cs: Add regression test for #506915.
3208
3209 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3210
3211         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3212         optimization we must check the bb of the first byte of stobj as
3213         it's the only one set in cil_offset_to_bb.
3214
3215         Fixes #506915.  
3216
3217 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * image-writer.c: Fix pointer directive on ppc64.
3220
3221 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * image-writer.c (asm_writer_emit_section_change): Avoid using
3224         .bss subsections on ppc too.
3225
3226 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * image-writer.c: Fix the definition of TARGET_ASM_....
3229         
3230         * image-writer.c: Fix the emission of assembler directives in the last
3231         change.
3232
3233         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3234         exception throwing code to accomodate ppc64.
3235
3236         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3237         size to work on ppc64 too.
3238
3239         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3240         too.
3241
3242         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3243         the assembler dialect instead of using platform specific defines.
3244
3245 2009-05-22  Geoff Norton  <gnorton@novell.com>
3246
3247         * mini-arm.c (get_call_info): If a structure is split between the stack
3248         and argument registers, we should not advance the stack pointer by the entire
3249         native size, but just by the amount that spilled.
3250
3251 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3252
3253         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3254         correctly.
3255
3256 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3259         wrappers normally.
3260         
3261         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3262         methods so wrapper don't get added twice.
3263         (add_generic_instances): Don't add methods of arrays.
3264
3265         * generics.cs: Mark one test as !FULLAOT.
3266
3267 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3268
3269         * mini-x86.c (emit_move_return_value): Remove unused vars.
3270
3271 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3272
3273         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3274         decomposing 8 bytes structs into a LCALL.
3275
3276         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3277         pointer for where to store the returned regs.
3278
3279         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3280         state the concern.
3281
3282         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3283
3284 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3285
3286         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3287         without getenv.
3288
3289 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3292
3293         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3294         generics.
3295
3296 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3297
3298         * local-propagation.c (mono_local_cprop): Avoid local propagation
3299         across paired add/sub if the first instruction dest reg is it's
3300         source reg. For example:
3301
3302         int_add_imm R12 <- R12 [1] clobbers: 1
3303         int_sub_imm R42 <- R12 [1] clobbers: 1
3304
3305         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3306         maintain the math identify.
3307
3308         Fixes #505375.
3309
3310 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3311
3312         * Makefile.am: avoid going on the network just to get the revision,
3313         use git log instead
3314
3315 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3316
3317         Fixed estimate for short branches on amd64 (they were off mark, and
3318         enabling call prolog-epilog instrumentations caused assertions).
3319         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3320         estimate for the maximum length of this basic block.
3321         * mini-amd64.c:
3322         - mono_arch_emit_prolog: compute max_length for each basic block
3323           (instead of max_offset), and inflate size estimate also for entry bb
3324           in case of code instrumentation.
3325         - mono_arch_output_basic_block: get rid of "cpos" (the current
3326           estimated "position" in the code), and always use "offset" instead,
3327           which is accurate; at the beginning of the function quickly recompute
3328           max_offset for all the remaining blocks, starting from the current
3329           cfg->code_len (which is correct, and not estimated) and using the
3330           estimated block lengths computed previously.
3331
3332 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3335         functions, it is already done in the caller.
3336
3337         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3338
3339         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3340         MONO_ARCH_GSHARED_SUPPORTED define.
3341
3342         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3343
3344         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3345         function.
3346
3347 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3350         call to mono_marshal_get_rgctx_invoke ().
3351
3352         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3353         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3354         gshared use the static rgctx trampolines now.
3355         
3356         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3357         platform supports it.
3358
3359 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3362
3363         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3364
3365 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3368
3369         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3370         for ppc.
3371
3372 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3373
3374         Made it possible for mono_arch_instrument_epilog to preserve
3375         argument registers, otherwise instrumenting the "epilogue" before
3376         a tail call would clobber them.
3377         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3378         if like mono_arch_instrument_epilog but with an additional parameter
3379         that states if argument registers must be preserved.
3380         * mini.c: implemented mono_arch_instrument_epilog as a call to
3381         mono_arch_instrument_epilog_full without asking to preserve argument
3382         registers (this makes the existing code work as usual).
3383         * mini-amd64.c:
3384         - mono_arch_instrument_epilog: add parameter to transform it into
3385         mono_arch_instrument_epilog_full, and preserve argument registers
3386         when required.
3387         - mono_arch_output_basic_block, OP_TAILCALL case: call
3388         mono_arch_instrument_epilog_full.
3389         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3390         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3391         only transformed mono_arch_instrument_epilog into
3392         mono_arch_instrument_epilog_full.
3393
3394 2009-05-15  Geoff Norton  <gnorton@novell.com>
3395
3396         * mini-darwin.c: This works on arm now.
3397
3398 2009-05-14  Geoff Norton  <gnorton@novell.com>
3399
3400         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3401         embedding api.
3402
3403 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3406         label names.
3407
3408         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3409         wrappers during full aot mode correctly.
3410
3411         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3412         methods correctly.
3413
3414         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3415         mono_metadata_type_hash ().
3416
3417 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3418
3419         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3420         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3421         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3422         Removed MONO_INST_BRLABEL from the instruction flags, and the
3423         remaining code that used it, because we do not support branches inside
3424         basic blocks (and branch target labels) anymore.
3425         * Makefile.am: As part of the above cleanup, remove reference to
3426         BURG files which don't exist anymore.
3427
3428 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3429
3430         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3431         osx.
3432
3433         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3434         to use mono_arch_throw_corlib_exception.
3435
3436         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3437         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3438
3439         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3440         domain mempool.
3441
3442         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3443
3444         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3445         for the got to make debugging easier and to avoid confusing it with the
3446         system got.
3447         
3448         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3449         method so a breakpoint can be set when using gdb.
3450
3451 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3454         on mono_method_get_imt_slot ().
3455
3456         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3457         num_decodes variables.
3458
3459         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3460         change as it doesn't seem to work.
3461         
3462         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3463         wrappers.
3464
3465 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3468         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3469
3470         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3471         builder when using full aot.
3472
3473         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3474         here, it is already handled.
3475         
3476         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3477         correctly for IMT.
3478
3479         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3480
3481         * mini-arm.h: Enable IMT for full aot.
3482         
3483         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3484         arch doesn't support it.
3485
3486         * mini.c (mini_init): Don't disable IMT for full aot if the
3487         architecture supports it.
3488
3489         * mini.h (MonoAotTrampoline): New enum containing the different types
3490         of 'numerous' trampolines.
3491         (MONO_AOT_FILE_VERSION): Bump this.
3492
3493         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3494         static rgctx trampolines. Add support for full-aot IMT thunks.
3495
3496         * mini-amd64.h: Enable IMT for full aot.
3497
3498         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3499         to exclude tests belonging to a category.
3500
3501         * generics.cs: Mark some tests with a !FULLAOT category.
3502
3503         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3504         generics tests.
3505
3506 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3507
3508         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3509         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3510         (emit_plt): Fix a warning.
3511
3512 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3515         back into aot-compiler.c to a place where the other functions shared by
3516         the runtime and aot compiler are.
3517         
3518         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3519         as done previously, instead of in MonoAotFileInfo, since pointers might have
3520         alignment requirements.
3521
3522         * mini.h: Bump AOT file format version.
3523
3524 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3525
3526         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3527         that is used at runtime from the aot-compiler.c, this makes it
3528         work on setups that remove the AOT compiler from the output
3529         image. 
3530
3531 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3532
3533         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3534         PPC.
3535
3536         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3537
3538         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3539
3540         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3541         stuff to mono_arch_decompose_long_opts ().
3542         (mono_decompose_opcode): Remove some dead code.
3543
3544 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3545
3546         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3547         cmethod can be null for quite a some reasons.
3548
3549 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3550
3551         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3552
3553 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3554
3555         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3556
3557 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3560         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3561         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3562         calls returning structures by addr on amd64.
3563
3564         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3565
3566         * iltests.il.in: Restructure the tail call tests a bit.
3567         
3568 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3571         for virtual methods too.
3572
3573 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3574
3575         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3576         due to regression in verifying System.dll.
3577
3578 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3581         in dynamic methods.
3582
3583         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3584         instances.
3585
3586         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3587         g_str_hash () which can change.
3588
3589         * driver.c (mini_regression): Disable optimizations not supported by
3590         the cpu. Fixes #500019.
3591
3592         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3593         build.
3594
3595 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3596
3597         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3598         to the latest LLVM code.
3599
3600 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3603
3604 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3605
3606         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3607         x86/amd64.
3608
3609         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3610         no longer saving offsets, so just save the patch types along with the other
3611         info.
3612         * aot-runtime.c (load_patch_info): Update after the changes to 
3613         encode_patch_list ().
3614         (decode_got_entry): Removed, merged into load_patch_info ().
3615         (is_shared_got_patch): Removed, call the same function from
3616         aot-compiler.c.
3617
3618         * mini.h: Bump aot file format version.
3619         
3620         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3621         half-finished no-dlsym code.
3622
3623         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3624         option.
3625
3626         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3627         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3628
3629 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3632         buffer length to work with AOT code.
3633
3634         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3635         ldfld/stfld opcodes.
3636
3637         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3638         as it is not used.
3639
3640         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3641
3642         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3643
3644         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3645         LLVM API.
3646
3647         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3648         if needed. Don't decompose long operations when using llvm.
3649
3650 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3653         PAGESIZE constant.
3654
3655         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3656
3657 2009-05-03  Martin Baulig  <martin@ximian.com>
3658
3659         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3660         mono_debugger_insert_method_breakpoint() since the class init
3661         handler we're inserting at the top of the method already gives us
3662         a notification.
3663
3664 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3667         to mono_arch_decompose_long_opts () for x86 and arm.
3668
3669 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3670
3671         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3672         TARGET_AMD64 here.
3673
3674 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3677         JIT code.
3678
3679 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3680
3681         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3682         number of trampolines used in full-aot mode.
3683
3684         * aot-compiler.c: Add an ntrampolines option to set the number of 
3685         trampolines emitted in full-aot mode.
3686
3687 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3690         a volatile load. Get rid of get_tempname (), llvm assigns names
3691         automatically.
3692
3693         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3694         builder function.
3695
3696         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3697         a value.
3698
3699         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3700         level 1.
3701
3702         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3703         to the same register as a fixed sreg2. Fixes #497271.
3704
3705         * iltests.il.in: Add a new test.
3706
3707 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3708
3709         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3710         stack, since pushes complicate exception handling.
3711
3712         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3713         the stack if they are passed using moves.
3714
3715         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3716
3717         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3718         when using llvm.
3719
3720         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3721         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3722         of FMOVE if it is an R4.
3723
3724 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3727
3728         * mini.h (LLVMCallInfo): New structure to store calling convention 
3729         information for the LLVM back end similar to the CallInfo structures in 
3730         the back-ends.
3731
3732         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3733         call information in a format usable by LLVM.
3734         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3735
3736         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3737         mono_llvm_emit_call () when compiling using LLVM.
3738
3739         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3740         comments to all functions. Fix memory leaks. Add a public init/cleanup
3741         function.
3742
3743         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3744
3745         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3746         mono_array_new_va () jit icall.
3747         
3748 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3749
3750         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3751         multiple machine description files to be specified.
3752         * mini-ops.h: fixes for cross-compilation.
3753
3754 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3755
3756         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3757         some porting work.
3758
3759 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3762         to prevent asserts in various passes. Fixes #497220.
3763
3764 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3767         a racy assert.
3768
3769         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3770         table to avoid duplicates.
3771
3772         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3773         
3774         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3775         option is used.
3776
3777 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3778
3779         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3780         is for method or field access.
3781
3782 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3783
3784         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3785         a Value to stdout.
3786
3787         * mini-llvm.c (mono_llvm_emit_method): Use it.
3788         
3789         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3790         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3791         on volatile values.
3792
3793         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3794         synchronized methods.
3795
3796         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3797
3798         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3799
3800         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3801         OP_LOADI8_MEM.
3802
3803         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3804         allowing some options to be set dynamically.
3805
3806 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3809         unconditional branch.
3810
3811         * mini.h (MonoTrampolineType): Add new trampoline type 
3812         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3813         compiled code.
3814
3815         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3816         function.
3817
3818         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3819         creation function.
3820
3821         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3822         is enabled. Instead, use the llvm vcall trampoline.
3823         
3824         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3825
3826         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3827         
3828         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3829         functions.
3830
3831         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3832         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3833
3834         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3835         OP_IA64_CSET opcode.
3836
3837         * mini.c: Fix a warning.
3838
3839         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3840         THROW to the appropriate llvm type.
3841
3842 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * mini.c (mini_method_compile): Add statistics for methods JITted
3845         with/without LLVM.
3846
3847 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3848
3849         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3850         OP_IA64_CMP_<cond>_IMM opcodes.
3851
3852 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3855         corlib exceptions.
3856
3857         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3858         correctly.
3859
3860         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3861         GENERICINST.
3862
3863 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3864
3865         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3866
3867 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3868
3869         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3870         support.
3871
3872         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3873         rgctx invoke trampolines for x86.
3874
3875         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3876         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3877         (mono_arch_get_vcall_slot): Simplify this.
3878
3879 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3882         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3883
3884 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3887         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3888
3889         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3890
3891         * liveness.c (visit_bb): Remove a needless assert.
3892
3893 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3896         full aot support to the arch specific code.
3897
3898         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3899
3900         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3901
3902         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3903         
3904         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3905         collect information about the delegate invoke impl trampolines.
3906
3907         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3908         to save trampolines during full-aot mode.
3909
3910         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3911         creation function which returns a trampoline which sets the rgctx
3912         argument.
3913         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3914         wrapper if possible.
3915         (mono_delegate_trampoline): Ditto.
3916
3917         * mini.c (mono_jit_runtime_invoke): Ditto.
3918
3919         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3920         
3921         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3922
3923         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3924         
3925 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3928         just setting the opcode to OP_NOP.
3929
3930 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3931
3932         * mini.c (mini_method_compile): Put the last change inside an 
3933         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3934         
3935         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3936         and extend live ranges to cover the whole method when using xdb.
3937
3938         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3939         do it in the trampolines.
3940
3941         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3942         needed.
3943
3944         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3945         
3946         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3947         call code in full-aot mode since IMT is disabled there.
3948         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3949         new JIT no longer has that restriction.
3950
3951         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3952
3953         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3954         a more compact format.
3955         (mono_aot_wrapper_name): New function to return a unique name for a
3956         wrapper method, also used by the AOT runtime.
3957
3958         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3959         aot-compiler.c.
3960
3961         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3962         when a ICollection<T> etc is encountered.
3963         (add_generic_instances): Process method arguments/locals too.
3964         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3965         trampoline names.
3966
3967         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3968         
3969 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3970
3971         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3972
3973         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3974
3975         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3976         representing the result of the decomposition. Nullify instructions
3977         instead of setting them to OP_NOP since nops can't have registers
3978         set.
3979
3980 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3981
3982         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3983         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3984         info. Strip 'mapping symbols' on ARM.
3985
3986         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3987         
3988         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3989         this with the native genmdesc.
3990
3991 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3992
3993         * aot-runtime.c:  Fixing the MSVC build.
3994
3995         Code is contributed under MIT/X11 license.
3996
3997 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4000         JITted code depends on it.
4001
4002 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4003
4004         * aot-compiler.c: Use new MonoGenericParam accessors.
4005
4006 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4007
4008         Reduce memory usage and improve correctness wrt MonoGenericParam
4009         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4010         handing.  Avoid allocating MonoGenericParams, but use the ones in
4011         the container itself.
4012
4013 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4014
4015         * tasklets.c: Return exceptions in the out argument.
4016
4017 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4020         opcode. Use pointer types in more places instead of casting them to 
4021         integers.
4022
4023         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4024         optimizations.
4025         (mono_llvm_optimize_method): New helper function to optimize a method.
4026
4027         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4028         widening code so it could be called from more places.
4029         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4030         code paths in the call opcodes.
4031
4032 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4033
4034         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4035
4036 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * dwarfwriter.c: Use _ to separate class name 
4039         components as gdb can't handle '.'. Represent reference variables
4040         as 'class <NAME>&'.
4041         
4042         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4043
4044         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4045         
4046         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4047
4048         * gc-test.cs: New file with GC stack marking tests.
4049         
4050         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4051         negative numbers for vfp.
4052
4053         * basic-float.cs: Add a test.
4054         
4055 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4056
4057         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4058
4059 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4060
4061         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4062         part of tasklet/continuation support.
4063
4064 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4067         amd64 opcodes inside an ifdef.
4068
4069         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4070         of complex types.
4071         
4072         * dwarfwriter.c (emit_type): Emit the class info for classes.
4073
4074 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4077
4078         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4079
4080         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4081
4082         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4083
4084 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4085
4086         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4087
4088         * mini-llvm.c: Update comments.
4089
4090         * mini.h (COMPILE_LLVM): New macro.
4091
4092         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4093
4094         * ssa.c (mono_ssa_compute): Ditto.
4095         
4096         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4097         the unwind ops from a DWARF FDE.
4098
4099         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4100         methods by extracting the dwarf unwind ops from the unwind info generated
4101         by LLVM.
4102         
4103         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4104         calls.
4105
4106         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4107         addressing modes.
4108
4109 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * Makefile.am (llvm_sources): Enable this.
4112
4113         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4114         failing back to the JIT if something cannot be handled.
4115
4116         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4117         compiling with LLVM.
4118
4119         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4120         compiling with LLVM.
4121
4122         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4123         compiling with LLVM.
4124
4125         * mini-ops.h: Add a few opcodes needed by LLVM.
4126
4127         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4128         has no unwind info.
4129
4130         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4131         backend.
4132
4133         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4134
4135         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4136
4137 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4138
4139         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4140         ridiculously large methods.
4141
4142 2009-03-31  Martin Baulig  <martin@ximian.com>
4143
4144         * debug-debugger.c (debugger_remove_breakpoint): Call
4145         mono_debugger_remove_class_init_callback ().
4146
4147 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4150         right before emitting code, not at the start.
4151
4152         * mini.c (mono_postprocess_patches): Extract this into a separate function
4153         from mono_codegen ().
4154
4155         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4156         byref types correctly.
4157
4158 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4161         by the last change.
4162
4163 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4164
4165         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4166         indirect calls, this avoids problems where get_vcall_slot () would get
4167         confused by the native code for the instruction preceeding the call.
4168         (mono_arch_get_vcall_slot): Simplify this.
4169         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4170
4171         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4172         register allocator now seems to depend on them instead of the data in
4173         cpu-<ARCH>.md.
4174
4175         * mini.c (mini_method_compile): Throw the correct type of exception if
4176         mono_method_get_header () fails because of a loading error.
4177
4178 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini.c (mini_method_compile): Clear the loader error if the method
4181         header cannot be decoded.
4182
4183         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4184         interface methods on proxies correctly.
4185
4186         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4187         this argument for vtype methods. Add precise liveness info for arguments.
4188
4189         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4190         LIVERANGE_START/END opcodes.
4191
4192         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4193         for arguments and values in registers.
4194
4195 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4198         return a valuetype. Fixes #487518.
4199
4200         * iltests.il: Add a test.
4201         
4202         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4203
4204         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4205         closed over a null reference correctly.
4206
4207 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4210
4211 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4212
4213         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4214         allocated to the same registers as fixed sregs.
4215
4216 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4217
4218         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4219         ATOMIC_CAS_IMM ops.
4220
4221         * method-to-ir.c: Handle more cases for
4222         Interlocked.CompareExchange.
4223
4224         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4225         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4226         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4227
4228 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * aot-runtime.c (decode_method_ref): Fix a warning.
4231
4232         * unwind.c (mono_unwind_frame): Ditto.  
4233
4234 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4235
4236         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4237         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4238
4239         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4240         fix the handling of large values in the ALU_PC_G0_NC relocation.
4241
4242 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4245
4246 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4247
4248         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4249         ops.
4250
4251 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4252
4253         * method-to-ir.c: MINI_OP3 needs a comma.
4254
4255         * method-to-ir.c, mini.h, mini.c: Remove
4256         mono_init_op_sreg_counts ().
4257
4258 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4261         OP_JMP.
4262         
4263         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4264         assertion.
4265
4266         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4267
4268         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4269         code somewhat.
4270
4271 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4272
4273         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4274         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4275         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4276         operations.
4277
4278 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * driver.c: Change location of gc_wrapper.h.
4281
4282         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4283         inside finally clauses correctly. Fixes #485721.
4284
4285         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4286         after the change above.
4287
4288         * exceptions.cs: Add a test.
4289         
4290 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4293
4294         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4295         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4296         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4297
4298         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4299         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4300
4301 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4302
4303         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4304         Simplify logic for ensure_method_is_allowed_to_call_method. 
4305         Handle wrappers on callers.
4306
4307 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4308
4309         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4310         them don't run yet.
4311
4312         * basic-simd.cs: Fix the names of some test methods.
4313
4314 2009-03-18  Geoff Norton  <gnorton@novell.com>
4315
4316         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4317
4318 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4319
4320         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4321
4322 2009-03-17  Jb Evain  <jbevain@novell.com>
4323
4324         * driver.c: remove now uneeded call to mono_gc_base_init before
4325         mono_profiler_load.
4326
4327 2009-03-17  Jb Evain  <jbevain@novell.com>
4328
4329         * dwarfwriter.c (token_handler): handle more cases.
4330
4331 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4332
4333         * method-to-ir.c: Remove more dead code (that was required only
4334         because of method_is_safe). Fix compiler warnings.
4335
4336 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4337
4338         * method-to-ir.c: Remove unneeded/useless method_is_safe
4339         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4340
4341 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4342
4343         * mini.c (mini_method_compile): Print the method been compiled with
4344         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4345         for people not familiar with the runtime.
4346
4347 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4348
4349         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4350         a managed object which is later put into a GList. Return its class instead.
4351
4352         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4353         stack slots when using sgen.
4354
4355 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4358
4359 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4362         > so it works on the first vreg as well.
4363
4364 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4367         trigger randomly.
4368
4369         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4370         
4371         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4372         implement GArray.
4373
4374 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4377         native->IL offset mapping.
4378
4379 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4382
4383         * basic.cs: Add a test.
4384
4385 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4386
4387         * mini-x86.c (mono_arch_output_basic_block): Use different
4388         registers in case the ones we want to overwrite are used by the
4389         other operand.  Fixes regression in #480807.
4390
4391 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4392
4393         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4394
4395         * dwarfwriter.c (emit_line_number_info): The line number info for
4396         IL code was off by one. Fix that.
4397
4398         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4399         stack.
4400
4401 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4402
4403         Contributed under the terms of the MIT/X11 license by Steven
4404         Munroe <munroesj@us.ibm.com>.
4405
4406         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4407         Fixes #483462.
4408
4409 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4412         as well.
4413
4414 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4415
4416         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4417         the delegate ctor handling code. Fixes #482638.
4418         
4419         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4420         #481458.
4421
4422         * iltests.il.in: Add a test.
4423         
4424         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4425         mini-posix.c.
4426
4427 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4428
4429         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4430         is shared generic code, return the trampoline, even if the method
4431         has already been compiled.  Fixes #479763.
4432
4433         * mini.c, mini.h: New function
4434         mono_jit_find_compiled_method_with_jit_info() which is the same as
4435         mono_jit_find_compiled_method() but also returns the jit info.
4436
4437 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4438
4439         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4440         for methods which actually have one.  For all other methods, make
4441         sure the this argument var is live the whole method.
4442
4443         * mini.c (mini_method_compile): Every shared method has a
4444         this/vtable/mrgctx info.  Fixes #480807.
4445
4446 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4447
4448         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4449         generic/imt thunks where some entries branch through the vtable,
4450         while other entries branch directly.
4451
4452 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4455
4456         * mini-windows.c: Ditto.
4457         
4458         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4459         ctors.
4460
4461 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4462
4463         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4464         down an assert.
4465
4466 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4467
4468         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4469         #481403.
4470
4471 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4472
4473         * exceptions-x86.c: Include debug-mini.h - fixes build.
4474
4475 2009-03-04  Martin Baulig  <martin@ximian.com>
4476
4477         * debug-mini.c: Clean up the exception API and add documentation.
4478         (mono_debugger_handle_exception): New public method; this is
4479         called when throwing an exception or encountering an unhandled one.
4480         (mono_debugger_call_exception_handler): Formerly known as
4481         mono_debugger_handle_exception(); this is used to tell the
4482         debugger that we're about to invoke an exception handler.
4483
4484 2009-03-04  Martin Baulig  <martin@ximian.com>
4485
4486         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4487         ../metadata/mono-debug-debugger.c; save and reset exception state.
4488
4489 2009-03-02  Martin Baulig  <martin@ximian.com>
4490
4491         * debug-mini.c: Moved the debugger exception handling here from
4492         ../metadata/mono-debug-debugger.c.
4493
4494         * debug-mini.h
4495         (MonoDebuggerExceptionAction): New exception typedef.
4496
4497         * debug-mini.c
4498         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4499
4500         * exceptions-amd64.c
4501         (mono_amd64_throw_exception): Use the new debugger exception
4502         handling code.
4503
4504         * mini-exceptions.c
4505         (mono_handle_exception_internal): Don't call
4506         mono_debugger_unhandled_exception() here.
4507
4508 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini.c aot-compiler.c: Update after the changes to 
4511         mono_marshal_get_runtime_invoke ().
4512
4513         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4514         Virtual generic methods might not have method->slot set, work around
4515         that.
4516
4517         * generics.cs: Add a test.
4518
4519 2009-03-02  Geoff Norton  <gnorton@novell.com>
4520
4521         * mini.c:
4522         * driver.c: Allow signal chaining of SIGFPE as well.
4523
4524 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4527         this since it now receives the method not its generic context in the
4528         IMT reg.
4529
4530         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4531         generic/imt thunks where some entries branch through the vtable, while
4532         other entries branch directly.
4533
4534         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4535
4536         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4537         support for interface methods as well.
4538
4539         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4540         using the normal IMT thunks.
4541
4542         generics.cs: Add new tests.
4543         
4544         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4545         the generic inst to the generic imt thunks. This fixes AOT support, 
4546         improves consistency with the normal IMT thunks, and makes it easier to
4547         add support for interface generic virtual methods later.
4548
4549         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4550         
4551 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4552
4553         * driver.c (mono_set_signal_chaining): New public API function to enable
4554         signal chaining on POSIX platforms.
4555
4556         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4557         (si@lindenlab.com) to implement signal chaining. The original patch was
4558         contributed under the MIT X/11 license:
4559         https://bugzilla.novell.com/show_bug.cgi?id=318894
4560
4561 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4562
4563         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4564         too until it can be made to run on amd64.
4565
4566 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4569         to  get_generic_context_from_code () + get_call_info () if possible.
4570
4571 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4572
4573         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4574         suspend-on-sigsegv functionality.
4575
4576         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4577         to suspend when a native SIGSEGV is received. This is useful for debugging
4578         crashes which don't happen under gdb, since a live process contains more
4579         information than a core file.
4580
4581         * mini-exceptions.c (mono_print_thread_dump): Use 
4582         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4583
4584         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4585
4586         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4587         
4588         * basic-float.cs: Disable the tests which currently fail on amd64.
4589
4590         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4591         value to mono_arch_patch_callsite () to fix crashes.
4592         
4593         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4594
4595 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4598         nop code by patching the call address to point to the nullified class init
4599         trampoline, as the former does not seem to be safe on SMP machines.
4600
4601 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4602
4603         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4604         they were wrong.
4605
4606 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * basic-float.cs basic-calls.cs: Fix warnings.
4609
4610 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4611
4612         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4613         correct frame pointer in the LMF.  Should fix #478394.
4614
4615 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4618
4619         * image-writer.c: Make the binary writer less verbose.
4620
4621 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4624         are called from runtime invoke wrappers.
4625
4626 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4627
4628         * cpu-ppc.md (store_memindex): Increase the size of this.
4629
4630 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4631
4632         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4633
4634         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4635
4636         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4637         OP_LCONV_TO_R_UN.
4638
4639         Last fix for of #467201.
4640
4641
4642 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4645
4646         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4647         and long_conv_to_r8_2:
4648
4649         Fixed part of #467201.
4650
4651 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4652
4653         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4654
4655         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4656         conversion to 32 bits.
4657
4658         * cpu-x86.md: Increase the size of int_conv_to_r4.
4659
4660         * basic-float.cs: Add a test for this.
4661
4662         Fixed part of #467201.
4663
4664 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4665
4666         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4667
4668         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4669         conversion to 64 bits.
4670
4671         * basic-float.cs: Add a test for this.
4672
4673         Fixed part of #467201.
4674
4675 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4676
4677         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4678
4679         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4680         This behavior is compatible with MS.
4681
4682         * iltest.il.in: Add a test for this.
4683
4684         Fixed part of #467201.
4685
4686 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4689
4690         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4691         change the precision of the value.
4692
4693         * cpu-x86.md: Define len for float_conv_to_r4.
4694
4695         * basic-float.cs: Add a test for this.
4696
4697         Fixed part of #467201.
4698
4699 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4700
4701         * mini.c: Adjust locking order to the new semantics where the loader lock
4702         comes first.
4703
4704 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4705
4706         * aot-runtime.c:
4707         * mini-amd64.c:
4708         * mini-arm.c:
4709         * mini-ia64.c:
4710         * mini-mips.c:
4711         * mini-ppc.c:
4712         * mini-sparc.c:
4713         * mini-trampolines.c:
4714         * mini-x86.c:
4715         * mini.c:
4716         * tramp-alpha.c:
4717         * tramp-amd64.c:
4718         * tramp-arm.c:
4719         * tramp-hppa.c:
4720         * tramp-ia64.c:
4721         * tramp-mips.c:
4722         * tramp-ppc.c:
4723         * tramp-s390.c:
4724         * tramp-s390x.c:
4725         * tramp-sparc.c:
4726         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4727
4728 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4731         as it is incorrect.
4732
4733 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4734
4735         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4736         for cctors if needed.
4737
4738 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4739
4740         * mini-ppc.c: Fix build on Darwin.
4741
4742 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4745         version instead of 3 as valgrind doesn't like version 3.
4746
4747         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4748
4749         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4750         usable for hashing methods.
4751         (emit_extra_methods): Use the new hash to avoid putting every method in the
4752         same hash bucket.
4753
4754         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4755
4756         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4757         whenever a method ref could match a method.
4758         
4759         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4760         test to fail.
4761         
4762         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4763         methods refs.
4764
4765         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4766
4767         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4768         the encoding buffer.
4769
4770         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4771         mono_method_get_header () on inflated methods as an optimization.
4772
4773 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4774
4775         * ssa.c (fold_ins): Fix another crash if the instruction following the
4776         switch was optimized away.
4777
4778 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4779
4780         Contributed under the terms of the MIT/X11 license by Steven
4781         Munroe <munroesj@us.ibm.com>.
4782
4783         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4784
4785 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4788         around the mono_domain_alloc calls, it is now done by the functions
4789         themselves.
4790
4791         * aot-compiler.c (compile_method): Only add wrappers referenced by
4792         the method if compiling with full AOT.
4793         (mono_compile_assembly): Error out if --aot=full is specified on
4794         a platform where it is not supported.
4795
4796         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4797         on ARM too.
4798
4799         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4800         AOT support.
4801
4802         * aot-runtime.c (load_named_code): Handle 
4803         mono_arm_throw_exception_by_token.
4804
4805         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4806
4807         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4808         unaligned.
4809
4810         * Makefile.am (fullaotcheck): Exit if a test fails.
4811
4812         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4813         on ARM.
4814         (mono_compile_assembly): Handle the assembler failing.
4815
4816         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4817         accepting subsections of .bss.
4818
4819         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4820         was optimized away.
4821
4822         * aot-compiler.c: Remove some unused includes.
4823         
4824         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4825         now in MonoImageWriter.
4826
4827         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4828         code sequence which matches a non-virtual call. Fixes #472654.
4829
4830 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4831
4832         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4833         xdebug code.
4834         
4835         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4836         use the image/dwarf writers directly.
4837
4838         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4839         field.
4840
4841         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4842         MonoDwarfWriter.
4843
4844         * image-writer.h: Fix some typos.
4845
4846         * dwarfwriter.h dwarfwriter.c: New files.
4847         
4848         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4849         separate module.
4850
4851         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4852         argument to return unwind info.
4853
4854         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4855
4856         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4857         
4858         * aot-runtime.c (decode_method_ref): Add a case for 
4859         MONO_AOT_METHODREF_WRAPPER_NAME.
4860
4861         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4862         for AOT.
4863
4864         * aot-compiler.c (encode_method_ref): Use the new constants.
4865
4866         * aot-runtime.c (decode_method_ref): Ditto.
4867
4868         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4869         be compiled, not the icall itself.
4870
4871 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4874         using decode_method_ref ().
4875
4876         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4877         convert it to an in32. Fixes #475859.
4878
4879         * arrays.cs: Add a test.
4880
4881 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4882
4883         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4884         OP_LCONV_TO_U2.
4885
4886         * basic-long.cs: Add a test.
4887
4888 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4889
4890         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4891         remove the frame pointer in leaf methods which don't receive any
4892         arguments, don't throw exceptions and don't do dynamic stack
4893         allocations.
4894
4895 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4898         the fail_tramp changes. Hopefully fixes #475132.
4899
4900 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4901
4902         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4903         instead of mono_metadata_signature_dup_full.
4904
4905 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4906
4907         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4908         for processing jump tables. Fixes #473787.
4909
4910 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4911
4912         * mini-generic-sharing.c: mini_method_get_context() just calls
4913         mono_method_get_context_general() now.
4914
4915         * mini.c, mini.h: Moved get_object_generic_inst(),
4916         construct_object_context_for_method() and
4917         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4918
4919 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4922         basic block fell through to its successor bblock without a branch. Fixes
4923         #474718.
4924
4925         * iltests.il.in: Add a test.
4926         
4927         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4928         (can_encode_patch): We can now handle arrays of generic parameters and
4929         array methods.
4930
4931         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4932
4933         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4934         the AOT file to avoid some #ifdefs in aot-runtime.c
4935
4936         * mini.h: Bump AOT file format version.
4937
4938 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4939
4940         * Makefile.am (fullaotcheck): Make this run the tests.
4941
4942         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4943
4944 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4945
4946         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4947         individually.  Fixes #473482.
4948
4949 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4952
4953 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4954
4955         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4956         (mono_compile_assembly): Hush compile warnings about
4957         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4958         code path.
4959
4960 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4963
4964         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4965
4966         * aot-compiler.c: Fix arm support.
4967
4968         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4969         img_writer_emit_unset_mode () function.
4970
4971         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4972         (mono_unwind_get_dwarf_pc_reg): Ditto.
4973
4974         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4975         Move almost all platform specific code to a set of arch_ functions, 
4976         and document them to ease porting.
4977         
4978         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4979
4980         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4981
4982         * aot-compiler.c: Extract the image writing functionality into a separate
4983         module to reduce the size of this file.
4984
4985 2009-02-09  Geoff Norton  <gnorton@novell.com>
4986
4987         * mini-s390.c: Fix the signature of emit_sig_cookie.
4988
4989 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4990
4991         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4992
4993         * aot-runtime.c (is_shared_got_patch): Ditto.
4994
4995         * aot-runtime.c (load_named_code): Cope with the fact that 
4996         decode_got_entry () won't decode the patch fully if its corresponding got
4997         entry is already filled.
4998         
4999         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5000         Initialize *ji.
5001         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5002
5003         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5004         as the moving pointer instead of 'buf' for consistency with the rest of the
5005         codebase.
5006         (mono_arch_create_monitor_exit_trampoline): Ditto.
5007
5008         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5009         generic_class_init trampolines.
5010         (add_generic_class): Extract some code from add_generic_instances () into a
5011         separate function so it can be called from other places too.
5012         (compile_method): Call add_generic_class () for the classes of inflated methods
5013         referenced by the method.
5014         (can_encode_patch): Allow references to generic parameters.
5015
5016         * aot-runtime.c: Add support the patches required by the new trampolines.
5017         
5018         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5019         support.
5020
5021         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5022         full-aot support.
5023
5024         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5025         this from get_throw_pending_exception, make the signature full aot compatible.
5026
5027         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5028
5029         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5030
5031         * exceptions.cs: Add a test.
5032
5033 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5036         use the DWARF_DATA_ALIGN constant instead.
5037
5038         * exception-<ARCH>.c: Update after the above change.
5039
5040         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5041         dwarf unwinder.
5042
5043         * mini-arm.c: Enable the dwarf unwinder.
5044
5045         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5046         instead of mono_class_setup_vtable ().
5047
5048 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5051         dwarf unwinder.
5052
5053         * mini-x86.h: Enable the dwarf unwinder.
5054
5055 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5056
5057         Fix mcs/tests/test-7.cs
5058         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5059         2009-02-03.
5060
5061 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5062
5063         * mini.c (print_jit_stats): Remove some unused statistics.
5064
5065 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5068
5069 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5070
5071         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5072         the method we get from mono_object_get_virtual_method() because
5073         that function does it properly, now.
5074
5075 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5076
5077         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5078         opcodes. Fixes #472775.
5079
5080 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5081
5082         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5083         fact that mono_find_jit_info() sometimes returns the context
5084         corresponding to the jit info in new_ctx.  Fixes #472600.
5085
5086 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5087
5088         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5089         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5090         klass->enum_basetype directly.
5091
5092         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5093         enum subtypes.
5094
5095         * unwind.c: Avoid 0 sized arrays.
5096
5097 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5098
5099         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5100         size on systems with 64k pages. Fixes #471389.
5101
5102 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5103
5104         Contributed under the terms of the MIT/X11 license by Steven
5105         Munroe <munroesj@us.ibm.com>.
5106
5107         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5108         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5109         necessary.
5110
5111 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5112
5113         Contributed under the terms of the MIT/X11 license by Steven
5114         Munroe <munroesj@us.ibm.com>.
5115
5116         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5117         comparison fix.
5118
5119         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5120         The trampoline can be longer on PPC64.
5121
5122 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5123
5124         Contributed under the terms of the MIT/X11 license by Steven
5125         Munroe <munroesj@us.ibm.com>.
5126
5127         * mini-ppc.c: Compiler warning fixes and trivial code
5128         simplifications.
5129
5130 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5131
5132         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5133         ins->dreg which could be a hardware register, not a vreg.
5134
5135         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5136         
5137         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5138         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5139
5140         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5141         
5142         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5143         ->dreg, that is not the vreg we are looking for.
5144
5145         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5146
5147         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5148         LIVERANGE_END.
5149
5150         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5151         strange crashes.
5152
5153 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5154
5155         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5156
5157         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5158         the line diff is 0.
5159
5160         * aot-compiler.c: Add xdebug support on x86.
5161
5162         * unwind.c: Add x86 support.
5163         
5164         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5165         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5166
5167         * mini.c (mini_method_compile): Ditto.
5168         
5169         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5170         the variable index.
5171
5172         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5173         which mimic .push_section/.pop_section in GAS.
5174         
5175         * aot-compiler.c: Emit precise live range information for variables.
5176
5177         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5178
5179         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5180         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5181         them.
5182
5183         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5184         the live ranges of variables.
5185
5186         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5187         of the variable in terms of native offsets.
5188
5189 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5190
5191         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5192         
5193 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5194
5195         Contributed under the terms of the MIT/X11 license by Steven
5196         Munroe <munroesj@us.ibm.com>.
5197
5198         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5199         order (offset then base reg) for ppc_load_multiple_regs.
5200         (emit_save_saved_regs) Correct operand order for
5201         ppc_store_multiple_regs.
5202         (mono_arch_get_call_filter): Correct operand order for
5203         ppc_load_multiple_regs.
5204
5205         * mini-ppc.c (emit_memcpy): Fix operand order for
5206         ppc_load_reg_update and ppc_store_reg_update.
5207         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5208         (mono_arch_emit_epilog): Correct operand order for
5209         ppc_load_multiple_regs.
5210
5211         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5212         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5213
5214 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5215
5216         * cpu-ppc64.md: Fixed storer4_memindex length.
5217
5218 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5221         line number info.
5222         
5223         * aot-compiler.c (emit_line_number_info): Optimize this.
5224
5225 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5228         
5229         * aot-compiler.c: Add debug info for methods without debug info by
5230         emitting an IL file and having the line number info referencing that file.
5231
5232         * aot-compiler.c: Optimize the size of the generated line number info.
5233
5234         * aot-compiler.c: Emit line number info in xdebug mode.
5235
5236         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5237         million arguments.
5238
5239 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5242
5243         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5244         is used.
5245
5246 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5247
5248         * basic-calls.cs: Test for the weird crash found on arm.
5249         
5250 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5251
5252         * cpu-arm.md: Increase the size of storer8_membase_reg and
5253         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5254
5255         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5256         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5257         reg to LR otherwise we'll be loading/storing from just the offset.
5258
5259 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5260
5261         Question: if we are storing gint32's inside the "*native_offset",
5262         should we change the signature to "gint32 *native_offset" to
5263         ensure that we do not have type definition problems?
5264         
5265         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5266         an int * as this is what the other function expects, causes
5267         problems with Freescale's compiler that defined int32_t to be a
5268         long and makes int incompatible 
5269
5270 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5271
5272         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5273         filename conflict with bjam.
5274
5275 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5276
5277         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5278         as it might use decomposed ops.
5279
5280 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5283
5284         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5285         is defined.
5286
5287         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5288
5289         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5290         offsets.
5291
5292         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5293         way registers are stored in MonoContext on arm.
5294
5295         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5296         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5297
5298         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5299
5300         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5301
5302         * mini.c (mini_init): Register mono_isfinite.
5303
5304         * jit-icalls.c (mono_isfinite): New jit icall.
5305
5306         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5307         
5308         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5309         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5310         the parent frame.
5311
5312 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5313
5314         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5315         separate frame and stack pointers, so we must use FP to find the register
5316         spill area.
5317         The FP reg is retrieved from the MonoContext::regs array.
5318
5319 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5320
5321         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5322         as FPA requires it.
5323
5324 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5325
5326         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5327         return R4 and R8 when not running under softfloat.
5328
5329         Fixes basic-calls.exe
5330
5331 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * mini-arm.c: Implement some overflow opcodes.
5334
5335 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5336
5337         * ssa.c: handle another alloca.h
5338
5339         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5340         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5341         MONO_ARCH_USE_SIGACTION. 
5342
5343         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5344         capability defines.
5345
5346         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5347
5348         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5349         PPC targets as sigaction does not exist on all platforms, define
5350         this on a per-platform basis.
5351
5352         Instead of erroring out if the platform is not defined, include
5353         mini-ppc-os.h, and expect that the OS specific setting provides
5354         the required information.   
5355
5356 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * aot-compiler.c: Fix --enable-minimal=aot.
5359
5360 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5363         previous change.
5364
5365 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5366
5367         * exceptions-arm.c: Fix warnings.
5368
5369         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5370         ARM.
5371
5372         * mini-x86.c: Fix --enable-minimal=jit build.
5373
5374         * mini.c: Really fix --enable-minimal=jit build.
5375         
5376         * mini.c (construct_object_context_for_method): Move this outside
5377         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5378
5379         "Backported" of r124984 from 2.0 branch.
5380         
5381         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5382
5383         "Backport" of r124977 + r124978 from 2.0 branch.
5384         
5385         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5386         to avoid calling mono_exception_from_token () from the throw trampoline.
5387         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5388         for throwing corlib exceptions, this fixes full-aot support for corlib
5389         exceptions.
5390
5391         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5392
5393 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5394
5395         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5396         part of the changes to split the code in mini into operating
5397         system specific files.
5398
5399         This patch was done by copying mini.c to the respective files to
5400         preserve SVN history.
5401
5402 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5403
5404         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5405
5406 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5409         remoting-invoke-with-check wrappers of shared methods.
5410
5411         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5412
5413 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5414
5415         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5416         optimization if the top of stack is the last instruction in the
5417         bblock.  Otherwise it might have been used after its definition.
5418         Fixes #469742.
5419
5420 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5421
5422         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5423         method as well when get_vcall_slot () fails to match a code sequence.
5424
5425         * mini-arm.c: Fix the android build, which doesn't have
5426         __aeabi_read_tp.
5427
5428 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5431         the s390x build.
5432
5433 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5434
5435         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5436
5437 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5438
5439         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5440         and put its id into jinfo->used_regs. This is only used on amd64,
5441         which is currently the only platform generating unwind info.
5442
5443         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5444         the dwarf unwinder. This is required to correctly handle async exceptions
5445         like thread abort and stack overflows, which can happen while a method
5446         is in the middle of its prolog or epilog.
5447         
5448         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5449         the unwind info belonging to an AOTed method.
5450
5451         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5452         into cfg->unwind_ops.
5453         
5454         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5455
5456         * mini.c (mini_init): Call mono_unwind_init ().
5457         (mini_cleanup): Call mono_unwind_cleanup ().
5458
5459         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5460         unwind info to be shared between methods.
5461
5462         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5463         saved in the LMF.
5464
5465         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5466         get_throw_pending_exception () to avoid initialization races.
5467
5468         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5469         mono_arch_exceptions_init () function.
5470
5471         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5472
5473 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * mini.c (mono_get_domain_intrinsic): New helper function.
5476         (mono_get_thread_intrinsic): Ditto.
5477
5478         * mini-arm.c mini-ia64.c: Use the new helper functions.
5479         
5480         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5481         the last constrained_call change, since it is needed in the non-AOT
5482         case as well.
5483
5484         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5485         
5486         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5487         mono_get_lmf_addr () on arm eabi linux.
5488
5489 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5490
5491         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5492         code sequence which matches a non-virtual call.
5493
5494 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5495
5496         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5497         stack pointer (r1).
5498
5499 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5500
5501         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5502         runtime-invoke wrappers, since they are also shared based on signature.
5503
5504 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5505
5506         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5507         info from the (correct) context.
5508
5509 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5510
5511         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5512         
5513         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5514         using dwarf unwinding info. Not yet used.
5515
5516         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5517
5518 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5519
5520         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5521         descriptors.
5522
5523         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5524         special case and handle mono_arch_delegate_invoke_impl() returning
5525         function descriptors.
5526
5527         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5528         trampolines return function descriptors, too.
5529
5530 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5531
5532         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5533         out_of_line optimization.
5534
5535 2009-01-21  Martin Baulig  <martin@ximian.com>
5536
5537         * mini.h
5538         (MonoCompile): Added `disable_deadce_vars' to disable removing
5539         unused variables.
5540
5541         * mini.c
5542         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5543         inside the debugger.
5544
5545         * liveness.c (mono_analyze_liveness): Don't remove any unused
5546         variables if `cfg->disable_deadce_vars' is set.
5547
5548 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5549
5550         * method-to-ir.c: Only apply exception constructor optimization if
5551         the the method actually belongs to an exception class.  Fixes
5552         #467456.
5553
5554 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5557         change inside a #ifdef __mono_ppc64__.
5558
5559         * aot-compiler.c (compile_method): Remove the previous limitation.
5560
5561         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5562         on type variables in AOTed code.
5563         
5564         * aot-compiler.c (compile_method): Skip generic methods having type 
5565         constraints on their generic parameters.
5566
5567         * aot-compiler.c (compile_method): Check for methods which cannot be
5568         encoded inside RGCTX_FETCH patches as well.
5569
5570         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5571         build.
5572
5573 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5574
5575         * method-to-ir.c: Force the vtable variable in shared generic code
5576         for the case that they might show up on a stack trace where they
5577         are needed.
5578
5579         * mini-exceptions.c: Save and use generic sharing info as well as
5580         IP in stack traces to resolve shared generic instantiations.
5581
5582 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5585         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5586
5587 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5588
5589         * method-to-ir.c: Do generic sharing for array constructors.
5590
5591 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * mini-exceptions.c (mono_print_thread_dump): Add information
5594         about the thread state using wapi_current_thread_desc.
5595
5596 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5597
5598         * basic-simd.cs: Tests for the new constructors. 
5599
5600 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5601
5602         * mini-ops.h: Added OP_EXPAND_*
5603
5604         * cpu-x86.md: Same.
5605
5606         * mini-x86.c (mono_arch_output_basic_block): Same.
5607         
5608         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5609
5610 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * iltests.il.in: Add a test for #467385.
5613
5614 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5615
5616         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5617         thread been cleaned up is not the same currently in execution.
5618
5619         Fixes appdomain-unload crashes on windows, osx and linux variants
5620         without the __thread keyword.
5621
5622 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5623
5624         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5625         (koush@koushikdutta.com). Implement this for android.
5626
5627         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5628         begins with a digit.
5629
5630         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5631         mono_marshal_get_write_barrier ().
5632
5633 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5634
5635         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5636         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5637         that pass them on a register pair.
5638
5639         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5640         test was crashing due to that.
5641
5642 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5643
5644         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5645         trampoline code. Include ucontext.h only if available.
5646
5647 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5648
5649         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5650         and doesn't check whether it's sharable, like it was before
5651         removing the shared generics hash.  This brings IronPython
5652         performance back to what it was before that change.
5653
5654 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5655
5656         * method-to-ir.c: Handle delegate invocation optimization earlier,
5657         otherwise it would be handled (much more slowly) by the
5658         final/sealed optimization.
5659
5660 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5663         domain is not set. Fixes #465864.
5664
5665 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5666
5667         * method-to-ir.c: Don't stop sharing of generic methods with catch
5668         clauses - we already handle those.
5669
5670 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5671
5672         * mini.c, mini.h: lookup_generic_method() is now
5673         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5674         making the shared_generics_hash obsolete.
5675
5676 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5677
5678         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5679         use the red zone.  Make room on the stack first and then use it,
5680         not the other way around.
5681
5682 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * mini.c (mini_init): Call mono_xdebug_init ().
5685
5686         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5687
5688 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5689
5690         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5691
5692         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5693         trampolines.
5694
5695         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5696         debug+unwind info for trampolines.
5697
5698         * mini.c (mono_create_unwind_op): New helper function.
5699
5700         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5701
5702 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * aot-compiler.c: Fix the build.
5705
5706 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5707
5708         * Makefile.am: Update dtrace-prelink.sh location.
5709
5710 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5713         optimization. Fixes #464520.
5714
5715 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5716
5717         * mini-amd64.c : Adding code to save/restore non-volatile registers
5718            on Winx64.
5719
5720         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5721           registers on Winx64.
5722
5723         Contributed under MIT/X11 license.
5724
5725 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5726
5727         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5728         __GNUC_MINOR__ which can break when the major version changes.
5729
5730 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5731
5732         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5733
5734 2009-01-07  Geoff Norton  <gnorton@novell.com>
5735
5736         * helpers.c:  Allow mono -v -v -v to work on darwin.
5737
5738 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5739
5740         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5741           pattern. 
5742
5743         Contributed under MIT/X11 license.
5744
5745 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5748         instead of directly accessing type->data.klass. Fixes #462016.
5749         (mono_allocate_stack_slots_full): Ditto.
5750
5751         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5752         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5753
5754         * aot-compiler.c (emit_plt): Fix ARM build.
5755
5756 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5759         
5760         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5761         change.
5762
5763         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5764         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5765         #463357.
5766
5767         * iltests.il.in: Add a regression test.
5768
5769 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5770
5771         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5772
5773 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5774
5775         * basic-simd.cs: Add a regression test for #462457.
5776
5777 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5778
5779         * mini-ops.h: Add a definition of XPHI.
5780
5781         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5782
5783         * ssa.c (op_phi_to_move): Handle XPHI.
5784
5785         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5786
5787         Fixes #462457
5788
5789 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5792
5793 2008-12-31  Geoff Norton  <gnorton@novell.com>
5794
5795         * mini-ppc.c: The prolog size allocated can be too small for darwin
5796         ppc32 under certain circumstances.  Also fix a small logic bug.
5797
5798 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5801         while loading AOT methods.
5802
5803         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5804         since only the former is nulled out after a successful cast. This prevents
5805         crashes with rethrown exceptions when using --debug=casts.
5806
5807 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5808
5809         * mini.h: New macro for checking whether a method is final,
5810         i.e. whether the method or its class is marked final.
5811
5812         * method-to-ir.c: Use the new macro for all final-checks
5813         consistently.  Fixes the crash in the System.ServiceModel tests.
5814
5815 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5816
5817         * mini-exceptions.c (get_exception_catch_class): Corrected another
5818         overly strict assertion.
5819
5820 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5821
5822         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5823         Clobbering it is not allowed because the caller might use it as
5824         the vtable register in the interface call.
5825
5826 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5827
5828         * mini-exceptions.c (get_exception_catch_class): Corrected an
5829         overly strict assertion.
5830
5831 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5832         
5833         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5834
5835         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5836
5837         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5838
5839         * cpu-mips.md: correct lengths for certain long_ opcodes.
5840
5841         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5842
5843         * 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().
5844         
5845 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5846
5847         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5848         
5849 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5850         
5851         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5852         
5853 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5854
5855         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5856         next basic block.
5857         
5858 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5859
5860         * 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
5861
5862         * 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)
5863         
5864 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5865         
5866         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5867         
5868 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5869
5870         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5871         gshared code. Fixes #458947.
5872
5873         * generics.cs: Add a test.
5874
5875 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5876         
5877         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5878         
5879         * mini-mips.c: first pass n32 code generation.
5880
5881         * mini-mips.h: datatypes and defines for n32 support.
5882
5883         * exceptions-mips.c: first pass n32 code generation.
5884         
5885         * tramp-mips.c: first pass n32 code generation.
5886         
5887         * cpu-mips.md: add long_ opcodes.
5888         
5889 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5890
5891         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5892
5893         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5894         
5895         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5896         
5897         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5898
5899         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5900
5901         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5902
5903         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5904
5905         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5906
5907         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5908
5909 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5910
5911         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5912
5913 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5914
5915         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5916
5917 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5918
5919         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5920         descriptors for helper functions directly in front of the code.
5921
5922 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5923
5924         * method-to-ir.c: Removed an unnecessary assertion.
5925
5926 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * method-to-ir.c: Merge SGEN changes from the old JIT.
5929
5930 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * driver.c (compile_all_methods_thread_main): Handle failure of
5933         mono_get_method ().
5934
5935 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5936
5937         * mini-ppc.c: Merged with mini-ppc64.c.
5938
5939         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5940
5941         * Makefile.am: Use the same sources for PPC and PPC64.
5942
5943         * mini-ppc64.c: Removed.
5944
5945 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5946
5947         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5948         code to mono_bb_is_fall_through.
5949         
5950         * branch-opts.c (mono_remove_critical_edges): Same.
5951
5952 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5953
5954         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5955         expect that an OP_BR_REG will be there.
5956
5957 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5958
5959         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5960         for the many branch ops. The original check miss OP_BR_REG.
5961
5962         Fixes #457574.
5963         
5964 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5965
5966         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5967
5968 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5969
5970         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5971         while holding the aot lock.
5972
5973 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5974
5975         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5976         
5977 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5978
5979         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5980           to release all runtime callable wrappers held by the runtime.
5981
5982         Contributed under MIT/X11 license.
5983
5984 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5985
5986         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5987           for Winx64.
5988
5989         Contributed under MIT/X11 license.
5990
5991 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5994         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5995
5996 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5997
5998         * cpu-mips.md: fix ckfinite length
5999
6000         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6001         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6002         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6003         
6004 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6005
6006         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6007         
6008 2008-12-08  Geoff Norton  <gnorton@novell.com>
6009
6010         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6011         size by 8 bytes as well.
6012
6013 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6014
6015         * basic-simd.cs: Fix method names for Vector16b.
6016         
6017 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6018
6019         * basic-simd.cs: Fix method names for Vector16sb.
6020
6021 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6022
6023         * basic-simd.cs: Fix method names for Vector8us.
6024         
6025 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * basic-simd.cs: Fix method names for Vector8s.
6028         
6029 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6030
6031         * basic-simd.cs: Fix method names for Vector4ui.
6032
6033 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * basic-simd.cs: Fix method names for Vector2l.
6036
6037 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * basic-simd.cs: Fix method names for Vector2d.
6040
6041 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6042
6043         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6044         that are extension methods.
6045
6046 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * basic-simd.cs: Fix method names for Vector4f.
6049
6050 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6053         as such. Fixes #456669.
6054
6055 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6056
6057         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6058         
6059 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6060
6061         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6062         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6063         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6064         (mips_adjust_stackframe): handle FP spills
6065                 
6066         * mini-ops.h: add mips_mtc1_s2
6067         
6068         * cpu-mips.md: add mips_mtc1_s2
6069         
6070 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * unwind.c: New file, move the unwind info encoding functions here from
6073         aot-compiler.c, so they could be used at runtime too.
6074
6075 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6076
6077         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6078         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6079         
6080 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6081
6082         * mini-mips.c: cleanup warnings
6083         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6084         (mips_adjust_stackframe): handle case of taking the address of stack locals
6085         
6086 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6087
6088         * aot-compiler.c: Implement a few functions missing from the asm writer.
6089         (emit_method_code): Only write symbols for methods when using the bin
6090         writer, since the assembler can't deal with the characters in our method
6091         names.
6092
6093         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6094
6095         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6096         call.
6097
6098         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6099         a bit to also restore %rax.
6100
6101 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6102
6103         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6104
6105 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6108         arguments.
6109
6110 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6111
6112         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6113
6114         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6115         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6116
6117         * exceptions-ppc64.c: Removed.
6118
6119         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6120
6121 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6122
6123         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6124         tramp-ppc64.c.
6125
6126         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6127
6128         * tramp-ppc64.c: Removed.
6129
6130 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6131
6132         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6133         the TYPESPEC table.
6134
6135 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6136
6137         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6138
6139         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6140         mini-ppc.h instead of mini-ppc64.h.
6141
6142         * mini-ppc64.h: Removed.
6143
6144 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6145
6146         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6147         
6148         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6149         
6150 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6151
6152         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6153         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6154         code easier.
6155
6156 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6157
6158         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6159
6160 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6163
6164 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6165
6166         * basic-simd.cs: Tests for operator == and != on Vector4f.
6167
6168 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6169
6170         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6171
6172         * simd-intrinsics.c: Kill useless enum.
6173
6174 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6175
6176         * cpu-mips.md: add long_conv_to_ovf_i4_2
6177         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6178
6179 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6180
6181         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6182         
6183         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6184
6185 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6186
6187         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6188         
6189 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         * basic-simd.cs: Add tests for new methods.
6192
6193 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6194
6195         * simd-intrinsics.c: Add support for operator == and !=
6196         on Vector4(u)i.
6197
6198         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6199
6200 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6201
6202         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6203
6204 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6207
6208         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6209         MONO_PATCH_INFO_ICALL_ADDR.
6210
6211         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6212
6213         * aot-compiler.c: Resurrect full-aot support.
6214
6215 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6216
6217         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6218         
6219 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6220
6221         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6222         
6223 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6224
6225         * basic-simd.cs: Fix tests to work under ppc.
6226         Remove tests for methods that will be removed.
6227
6228 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6229
6230         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6231         generic type (via a typedef or typeref) correctly.
6232
6233 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6234
6235         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6236         diagnose an assertion failure.
6237
6238 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6239
6240         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6241         Fix trampoline size.
6242
6243         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6244         conversion opcodes are implemented natively instead via emulation.
6245
6246 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6247
6248         * cpu-mips.md: remove mips_xori
6249
6250         * mini-ops.h:  remove mips_xori
6251
6252         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6253
6254         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6255         
6256         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6257         
6258 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6259
6260         * cpu-mips.md: fix instruction lengths.
6261
6262         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6263
6264         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6265
6266         * mini-ops.h: fix slti / sltiu op profiles.
6267         
6268 2008-12-02  Martin Baulig  <martin@ximian.com>
6269
6270         * method-to-ir.c (mono_method_to_ir): Disable debugging
6271         information for the init locals block to make the debugger stop
6272         after all locals have been initalized.
6273
6274 2008-12-02  Martin Baulig  <martin@ximian.com>
6275
6276         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6277         running inside the debugger.
6278
6279 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6280
6281         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6282         is enabled.
6283
6284         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6285         alu->alu imm optimization which only shows if deadce is disabled.
6286
6287         * aot-compiler.c: Rename the function names for the binary and asm writers
6288         so they can coexist in the same process. Rework the xdebug code to use the
6289         asm writer. This avoids the need to call into the runtime to dump the
6290         debugging info. Add more debugging info for types.
6291
6292         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6293
6294         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6295         cpu description tables, they can't occur in cpu-<ARCH>.md.
6296
6297         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6298         the stack in CEE_LDFLDA. Fixes #450542.
6299
6300         * generics.cs: Add a new test.
6301
6302 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6303
6304         * mini-ops.h: updated MIPS opcodes
6305         * mini-mips.c: decompose long opts
6306         * mini-mips.h: decompose long opts
6307         
6308 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6309
6310         * cpu-mips.md: fix length on int_rem_un
6311         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6312         
6313 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6314
6315         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6316
6317         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6318
6319 2008-11-29  Martin Baulig  <martin@ximian.com>
6320
6321         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6322         mono_debug_using_mono_debugger() in addition to the
6323         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6324
6325 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6326
6327         * mini-ops.h: updated more MIPS opcodes
6328         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6329         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6330         
6331 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6332
6333         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6334
6335 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6336
6337         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6338         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6339         * mini-ops.h: correct selected mips opcode entries
6340         
6341 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6342
6343         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6344         make them work.
6345
6346 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6347
6348         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6349
6350 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6351
6352         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6353         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6354         * mini-mips.h: disable IMT
6355         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6356         
6357 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6358
6359         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6360
6361 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6362
6363         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6364
6365 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6366
6367         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6368         consistency.
6369
6370 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6371
6372         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6373         for Set/GetVector aligned versions.
6374
6375 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6376
6377         * basic-simd.cs: Add tests for Get/SetVector.
6378
6379 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6380
6381         * mini.c: Removed g_slist_append_mempool().  Now in
6382         metadata/mempool.c.
6383
6384 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6387         size properly and make the bounds check optional.
6388
6389         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6390         for SetVector and IsAligned.
6391
6392 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6393
6394         * mini.c: Remove unused mono_normalize_opcodes () function.
6395
6396 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6397
6398         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6399         using the new atomic add ops now.
6400
6401         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6402         add.
6403
6404 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6405
6406         * mini-ppc64.c: Several fixes.
6407
6408 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6409
6410         * cpu-mips.md: added jump_table
6411         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6412
6413 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6414
6415         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6416
6417 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6418
6419         * mini-ops.h: corrected a handful of MIPS opcodes.
6420
6421 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6422
6423         * aot-compiler.c: MIPS to use ELF writer
6424
6425 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6426
6427         * mini-codegen.c: remove MIPS specific assert.
6428
6429 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6430
6431         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6432         fixes.  PPC64 now passes most of the runtime regressions.
6433
6434 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6437         volatile intervals a bit.
6438
6439 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6440
6441         * basic-long.cs: New test case.
6442
6443 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6444
6445         * mini.c (mini_method_compile): Disable globalra for large methods for 
6446         now.
6447
6448         * regalloc2.c (order_moves): Add fp support.
6449
6450         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6451         source bblock ends with an OP_BR_REG.
6452
6453         * ratests.cs: Add a new test.
6454
6455 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6456
6457         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6458         sharing.  PPC64 now passes generics.exe.
6459
6460 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6461
6462         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6463
6464 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6465
6466         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6467         memory when mono_jit_info_table_find () can't find the method in the
6468         LMF case.
6469
6470         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6471         AOTed code too.
6472         
6473         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6474         writer too.
6475
6476 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6477
6478         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6479         Several fixes.  PPC64 now runs exceptions.exe and
6480         devirtualization.exe.
6481
6482 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6483
6484         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6485         arrays.exe and basic-math.exe.
6486
6487 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6488
6489         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6490         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6491
6492 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6495
6496 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6499
6500         * ir-emit.h: Move macros from method-to-ir.c to here.
6501
6502 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6503
6504         * mini-ops.h: Correct the long simd ops to use LREG.
6505
6506 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6507
6508         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6509         
6510         * mini-ops.h: Correct the dreg type of a few long opcodes.
6511
6512         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6513         Add netbsd support.
6514
6515 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6516
6517         * mini-ppc.c: remove negative stack references in epilog
6518         for platforms that don't support the red zone.
6519
6520 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6521
6522         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6523         point regs.  Now PPC64 passes basic-calls.exe.
6524
6525 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6526
6527         * basic-simd.cs: Add tests for accessors of Vector2l.
6528
6529 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6532
6533         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6534         
6535         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6536
6537 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6538
6539         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6540         PPC64 passes basic-long.exe.
6541
6542 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6543
6544         * decompose.c: Decompose carry and overflow add on PPC64 like on
6545         other 64 bit archs.  Don't decompose sub at all on PPC64.
6546
6547         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6548         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6549         basic-long.exe.
6550
6551 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6552
6553         * basic-simd.cs: Add tests for accessors of Vector2d.
6554
6555 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6556
6557         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6558
6559         * cpu-x86.md: Same.
6560
6561         * mini-x86.c (mono_arch_output_basic_block): Same.
6562         
6563         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6564
6565 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6566
6567         * basic-simd.cs: Add tests for accessors of Vector4f.
6568
6569 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6570
6571         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6572
6573         * cpu-x86.md: Same.
6574
6575         * mini-x86.c (mono_arch_output_basic_block): Same.
6576         
6577         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6578
6579 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6582
6583 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6584
6585         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6586
6587         * cpu-x86.md: Same.
6588
6589         * mini-x86.c (mono_arch_output_basic_block): Same.
6590         
6591         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6592
6593 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6594
6595         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6596
6597 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6598
6599         * simd-intrinsics.c: Enable setters for Vector16sb.
6600
6601 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6604
6605         * cpu-x86.md: Same.
6606
6607         * mini-x86.c (mono_arch_output_basic_block): Same.
6608         
6609         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6610
6611 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * simd-intrinsics.c: Implement setter for Vector8us.
6614
6615 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6616
6617         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6618         for dead variables.
6619
6620 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6621
6622         * mini-ppc.c: remove references to the red zone in the prolog
6623         (for systems that don't support it).
6624
6625 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6626
6627         * cpu-ppc64.md: Fixed a few instruction lengths.
6628
6629         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6630         now.
6631
6632 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6633
6634         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6635         basic.exe now.
6636
6637 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6640
6641 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6642
6643         * mini-ops.h: Added OP_INSERT_I2.
6644
6645         * cpu-x86.md: Same.
6646
6647         * mini-x86.c (mono_arch_output_basic_block): Same.
6648         
6649         * simd-intrinsics.c: Implement setter for Vector8s.
6650
6651         * simd-methods.h: Add the names of get setters of Vector8s.
6652
6653 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6654
6655         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6656         
6657         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6658         parameters.
6659
6660         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6661
6662 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6663
6664         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6665         for PPC64.  An empty program runs now.
6666
6667 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6670
6671         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6672         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6673         info for JITted code is emitted into a shared library, loadable into gdb.
6674
6675 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6676
6677         * Makefile.am: Changes to build PPC64.
6678
6679         * mini-arch.h: Include mini-ppc64.h on PPC64.
6680
6681 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6682
6683         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6684         in PPC code up to r119147.
6685
6686 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6687
6688         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6689         cpu-ppc64.md: Changes for PPC64.
6690
6691         Based on code submitted by andreas.faerber@web.de at
6692         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6693         X11/MIT license.
6694
6695 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6696
6697         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6698         cpu-ppc64.md: Copied from the corresponding PPC files from
6699         r118846.
6700
6701 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6702
6703         * mini-ops.h: Added OP_ROUND.
6704
6705         * cpu-x86.md: Added round.
6706
6707         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6708
6709         * basic-math.cs: Added test_0_round to test rounding.
6710
6711         Contributed under MIT/X11 license.
6712
6713 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6714
6715         * aot-compiler.c : Fix the Winx64 build.
6716
6717         Contributed under MIT/X11 license.
6718
6719 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6720
6721         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6722         in OP_EXTRACT_R8 to avoid possible stack corruption.
6723
6724 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6727
6728         * cpu-x86.md: Added extract_r8.
6729
6730         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6731         
6732         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6733         a couple of OP_EXTRACT_I4.
6734
6735         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6736
6737         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6738
6739 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6742         and not 4.1. 
6743
6744 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6745
6746         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6747         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6748
6749         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6750         are not needed any more.
6751
6752         * mini.h: Remove the unused INS_LIST macros.
6753
6754         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6755         longer needed.
6756
6757         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6758         ir-emit.h.
6759
6760         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6761         mono_alloc_ireg () instead.
6762
6763         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6764         macros.
6765
6766         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6767         on amd64.
6768
6769         * aot-runtime.c (load_aot_module): Disable AOT when running under
6770         CAS.
6771
6772         * mini-amd64.h: Change the monitor fastpath defines to check for
6773         !PLATFORM_WIN32 so they work on *bsd too.
6774
6775         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6776
6777         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6778
6779         * mini.h (MonoCompile): Remove new_ir flag.
6780
6781         * regalloc.h regalloc.c: Remove unused code.
6782
6783         * cpu-*.md: Remove more unused opcodes.
6784
6785         * simple-cee-ops.h simple-mini-ops.h: Removed.
6786
6787         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6788         
6789 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * aliasing.h: Removed.
6792
6793         * *.c: Remove references to aliasing.h and inssel.h.
6794
6795         * mini.c: Remove additional unused functions.
6796
6797         * mini-ops.h cpu-*.md: Remove unused opcodes.
6798
6799 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6800
6801         Remove the old JIT code.
6802
6803         * inssel*.brg: Removed.
6804
6805         * ssa.c abcremoval.c aliasing.c: Removed.
6806
6807         * ssa2.c: Renamed to ssa.c.
6808
6809         * abcremoval2.c: Renamed to abcremoval.c.
6810
6811         * *.c: Removed all !cfg->new_ir code.
6812
6813         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6814         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6815
6816         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6817         
6818 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6819
6820         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6821         to simplify the code and cut back on the number of global symbols in the AOT
6822         file.
6823         
6824         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6825
6826 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6827
6828         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6829         with the got/got_info tables.
6830
6831         * mini.h: Bump AOT file format version.
6832         
6833         * unwind.h: New file, contains definitions for stack unwinding.
6834
6835         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6836         to cfg->unwind_ops.
6837         
6838         * aot-compiler.c: Generalize the emitting of unwind information to use the
6839         information in cfg->unwind_ops.
6840
6841         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6842
6843         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6844         AOT method frames. Enable writing symbols for methods by default.
6845
6846 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6847
6848         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6849         and make it work with vectors of element sizes 1, 2 and 4.
6850
6851         * simd-intrinsics.c: Enable getter for all vectors with element size
6852         1, 2 or 4.
6853
6854         * simd-methods.h: Add the names of other getters.
6855
6856         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6857
6858         * cpu-x86.md: Same.
6859
6860         * mini-x86.c: Same.
6861
6862 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6863
6864         * mini-ppc.h: portability fix.
6865
6866 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6867
6868         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6869         buggy and will overwrite it.
6870
6871 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6874         Use it to emit local symbols for all methods so AOTed methods show up with
6875         their full name in gdb/valgrind output.
6876
6877 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6878
6879         * mini-ppc.c: portability fixes.
6880
6881 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6882
6883         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6884         entries out of the if (!generic_shared...) code so it is always done.
6885         (mono_class_init_trampoline): Do the patching when running under valgrind
6886         too, newer versions of valgrind have no problems with it.
6887
6888 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6891         further sections.
6892
6893 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6894
6895         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6896         filters.
6897
6898 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6899
6900         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6901
6902 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6903
6904         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6905
6906         * cpu-x86.md: Same.
6907
6908         * mini-x86.c: Same.
6909
6910         * simd-intrinsics.c: Same.
6911
6912 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6915
6916 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6917
6918         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6919         to work with more Vector types.
6920
6921 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6922
6923         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6924         store the elemens directly instead of using and intermediate.
6925
6926 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6929
6930         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6931         to preserve %eax for aot plt trampolines.
6932
6933         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6934         (encode_method_ref): Flag synchronized methods so they won't go through
6935         the AOT trampoline.
6936
6937         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6938         wrappers.
6939
6940         * cpu-ia64.md (jmp): Increase max length.
6941
6942 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6945         open generic classes.
6946
6947         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6948
6949         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6950         box+brtrue optimization since it causes test failures on x86.
6951
6952 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6953
6954         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6955
6956         * cpu-x86.md: Same.
6957
6958         * mini-x86.c: Same.
6959
6960         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6961         for simd ctor values. 
6962
6963         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6964         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6965
6966 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6967
6968         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6969         LogicalRightShift.
6970
6971         * simd-instrincs.c: Same.
6972
6973         * basic-simd.cs: Same.
6974
6975 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * ratests.cs: Add more tests.
6978
6979         * regalloc2.c (add_spill_code): Handle more corner cases.
6980
6981 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6982
6983         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6984         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6985         both the source an destination of an instruction.
6986
6987 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6988
6989         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6990         wapihandles.c: more portability changes.
6991
6992 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6993
6994         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6995         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6996         safe to execute in a signal handler and the kernel provides better
6997         the info in /proc/self/smaps. Avoid the assert on sigaction during
6998         cleanup.
6999
7000 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7003         do the bblock linking hack if it is actually needed.
7004
7005         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7006         up linking.
7007
7008         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7009         crash problem is fixed.
7010
7011         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7012         bblocks.
7013
7014         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7015         for catch clauses.
7016         (mini_method_compile): Set the starting value of next_vreg to 
7017         MAX_IREGS + MAX_FREGS when using globalra.
7018
7019         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7020         filter clauses with BB_EXCEPTION_HANDLER.
7021
7022         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7023
7024 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7025
7026         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7027         space for stdcall.  Fixes regressions on Win32.
7028
7029 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7032         bblocks.
7033         (linear_scan): Remove an assert which doesn't seem to be needed.
7034
7035         * local-propagation.c (mono_local_deadce): Avoid a call to
7036         MONO_DELETE_INS which would screw up the instruction linking.
7037
7038         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7039
7040         * regalloc2.c: Upgrade to work the current JIT code.
7041
7042 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7045         case.
7046
7047         * aot-runtime.c: Remove some dead code.
7048
7049         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7050         consistency.
7051         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7052
7053         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7054         trampolines using sscanf since atoi doesn't work on large unsigned values.
7055
7056         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7057         Initialize code_size.
7058
7059 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7060
7061         * method-to-ir.c (mini_emit_inst_for_method): Make
7062         Interlocked.CompareExchange work for Int arguments on 32 bit
7063         archs, as well.
7064
7065 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7066
7067         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7068
7069 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7070
7071         * main.c Fix MSVC build.
7072
7073         Contributed under MIT/X11 license.
7074
7075 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7076
7077         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7078         alignment larger than 8 bytes are aligned correctly, too.
7079
7080         * mini.c: Honor the min_align field of MonoClass when laying out
7081         the stack.
7082
7083 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7086
7087         * aot-compiler.c (emit_plt): Fix a warning.
7088         
7089         * aot-compiler.c: Implement ARM support in the binary writer.
7090
7091 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7092
7093         * basic-simd.cs: Add test for getter with byref arg.
7094         Fix the naming of a few tests.
7095         Add missing checks to a test.
7096
7097 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7098
7099         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7100
7101         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7102         most of the full-aot support for monitor enter/exit trampolines.
7103
7104         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7105         enter/exit trampoline creation functions.
7106
7107         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7108         make dist.
7109
7110 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7111
7112         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7113         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7114         implement the needed functionality without adding crap to the runtime.
7115
7116 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7119         non-x86 builds.
7120
7121         * mini.c (mono_build_date): New global version holding the build date in
7122         string format.
7123         
7124         * Makefile.am (buildver.c): Generate a file containing the build date.
7125
7126         * main.c: Set the build date from the generated file.
7127
7128         * mini.c (mono_get_runtime_build_info): New helper function returning build
7129         information in a string format.
7130         
7131         * driver.c (mono_main): Print the build date in --version.
7132
7133         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7134         file when the bind-to-runtime-version option is used.
7135
7136 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7139
7140 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7141
7142         * simd-methods.h: Rename prefetch methods.
7143
7144         * simd-intrinsics.c: Same.      
7145
7146 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7147
7148         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7149         sizes.
7150
7151 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * aot-compiler.c: Use the bundled elf header files instead of depending on
7154         the system one.
7155         
7156         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7157         mempool.
7158
7159         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7160         on every call.
7161
7162 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7163
7164         * cpu-x86.md: Add store nta ops.
7165
7166         * mini-ops.h: Same.
7167
7168         * mini-x86.c: Same.
7169
7170         * mini.h: Add an enum for simd prefetch modes.
7171
7172         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7173         of store. Use the changed code to support store nta.
7174
7175         * simd-intrinsics.c: Add prefetch ops for all vector types.
7176
7177 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7178
7179         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7180         threads.
7181         
7182         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7183         names.
7184
7185         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7186         trampolines.
7187
7188 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7189
7190         * mini-x86.c: Fixed commit.
7191
7192 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7195
7196 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7197
7198         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7199         and MONITOR_EXIT, for the ASM fastpaths.
7200
7201         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7202         available.
7203
7204         * mini.c, patch-info.h: Signature and patch infos for
7205         Monitor.Enter/Exit trampolines.
7206
7207         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7208
7209         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7210         Monitor.Enter/Exit ASM fastpath for Linux.
7211
7212 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7213
7214         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7215
7216         * objects.cs: Add a new test.
7217         
7218         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7219
7220         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7221         if MONO_LOG_LEVEL is set.
7222
7223         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7224
7225         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7226
7227         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7228         
7229         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7230         of file offsets. Align the sections belonging to the data segment to 
7231         PAGESIZE.
7232
7233 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7236         elf.h. Port it to amd64.
7237
7238 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7239
7240         * driver.c: Enable SIMD by default.
7241
7242 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7243
7244         * cpu-x86.md: Add prefetch op.
7245
7246         * mini-ops.h: Same.
7247
7248         * mini-x86.c: Same.
7249
7250         * mini.h: Add an enum for simd prefetch modes.
7251
7252         * simd-methods.h: Add prefetch function names.
7253
7254         * simd-intrinsics.c: Add prefetch ops for all vector types.
7255
7256 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7257
7258         * aot-compiler.c (emit_bytes): Speed this up a little.
7259
7260 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * aot-compiler.c: Add JIT time etc. statistics.
7263         
7264         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7265
7266         * mini.h (MonoCompile): Add 'got_offset' field.
7267
7268         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7269         method_got_offsets array.
7270
7271         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7272         wrappers.
7273
7274         * aot-compiler.c (compile_method): Add generic method instances referenced
7275         by the method to the list of methods to be compiled, this is required so if
7276         A<T> references B<T>, and another assembly references A<int>, then it will
7277         also get a copy of B<int>.
7278
7279         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7280         when checking for monitor enter/exit.
7281
7282 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7283
7284         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7285         for Monitor.Enter and Monitor.Exit if enabled.
7286
7287         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7288         Solaris.
7289
7290 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7291
7292         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7293         of an OP_MOVE. Fixes #440046.
7294
7295         * basic-long.cs: Add a new test.
7296
7297 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7298
7299         * mini.h: Add synchronization note for the managed counter-part.
7300
7301         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7302         returns the simd caps of the current cpu.
7303
7304 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7305
7306         * basic-simd.cs: Remove Console.WriteLine.
7307
7308 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7309
7310         * basic-simd.cs: New tests for Vector2ul.
7311
7312 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7313
7314         * simd-intrinsics.c: Add new vector type Vector2ul.
7315
7316 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7317
7318         * basic-simd.cs: New tests for Vector2l.
7319
7320 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7321
7322         * cpu-x86.md: Add long version of most packed int ops.
7323
7324         * mini-ops.h: Same.
7325
7326         * mini-x86.h: Same.
7327
7328         * simd-intrinsics.c: Add new vector type Vector2l.
7329
7330 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7331
7332         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7333
7334         * simd-methods.h: Remove SN_op_BitwiseXor.
7335
7336 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7339         alignment.
7340
7341 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7342
7343         * basic-simd.cs: Test for Vector2d.
7344
7345         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7346         value.
7347
7348 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7349
7350         * cpu-x86.md: Add double version of all packed float ops.
7351
7352         * mini-ops.h: Same.
7353
7354         * mini-x86.h: Same.
7355
7356         * simd-intrinsics.c: Add new vector type Vector2d.
7357
7358         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7359
7360         * simd-methods.h: Add Duplicate.
7361
7362 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7363
7364         * basic-simd.cs: Test for packing with signed saturation.
7365
7366 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7369         found in the TYPESPEC table.
7370
7371 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7372
7373         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7374         too.
7375
7376         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7377
7378         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7379         instead of the RVA, since the RVA can be changed by tools like the cil 
7380         stripper.
7381
7382         * method-to-ir.c (mono_method_to_ir2): Ditto.
7383
7384         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7385         (deserialize_variable): Ditto.
7386
7387 2008-10-25  Martin Baulig  <martin@ximian.com>
7388
7389         * debug-mini.c (write_variable): Use
7390         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7391
7392 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * cpu-x86.md: Add unsigned variants of packd and packw.
7395
7396         * mini-ops.h: Same.
7397
7398         * mini-x86.h: Emit the right instruction for packd and packw.
7399         Add unsigned variants of packd and packw.
7400
7401         * simd-intrinsics.c: Packd and packw were used in place of their
7402         unsigned variants. Change that.
7403         Add intrinsics for (Signed)PackWithSignedSaturation.
7404
7405         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7406
7407 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7410
7411 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7412
7413         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7414
7415         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7416
7417         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7418         sse instructions.
7419
7420         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7421
7422 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7423
7424         * method-to-ir.c, mini.c: Special casing for the synchronized
7425         wrapper for the ldtoken+GetTypeFromHandle case.
7426
7427 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7430
7431         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7432         created/split bblocks.
7433
7434 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7435
7436         * mini-ops.h: Add packed signed mul high.
7437         
7438         * cpu-x86.md: Same.
7439
7440         * mini-x86.c (mono_arch_output_basic_block): Same.
7441
7442         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7443
7444         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7445
7446 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7447
7448         * basic-simd.cs: Tests for Vector16sb.
7449
7450 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7453
7454 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * mini-ops.h: Add packed signed min, max and compare greater.
7457         
7458         * cpu-x86.md: Same.
7459
7460         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7461         saturation.
7462
7463         * simd-methods.h: Add CompareGreaterThan.
7464
7465         * simd-methods.h: Remove CompareEquals.
7466
7467         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7468
7469         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7470
7471         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7472         CompareEqual.
7473
7474 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7475
7476         * basic-simd.cs: Fix tests due to change in the API.
7477
7478 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7479
7480         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7481
7482 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7483
7484         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7485
7486         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7487         inst_offset as this has invalid values for LDADDR.
7488
7489 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7490
7491         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7492
7493         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7494
7495 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7498         for accessing field->data.
7499
7500 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7501
7502         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7503
7504 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7507
7508         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7509
7510 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7511
7512         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7513         from the cfg mempool.
7514
7515 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7516
7517         * basic-simd.cs: Tests for new methods in Vector8us.
7518
7519 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7520
7521         * mini-ops.h: Add multiply and store high.
7522         
7523         * cpu-x86.md: Same.
7524
7525         * mini-x86.c (mono_arch_output_basic_block): Same.
7526
7527         * simd-methods.h: Same.
7528
7529         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7530         and CompareEqual.
7531
7532 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7535         mono_class_setup_vtable ().
7536
7537         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7538         mono_class_get_vtable_entry () for accessing klass->vtable.
7539
7540         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7541
7542         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7543         found.
7544
7545         * method-to-ir.c (mono_save_token_info): Don't save references made from
7546         wrappers.
7547
7548         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7549         of generic instances.
7550
7551         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7552
7553 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7554
7555         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7556         OP_JMP depends on the method signature.  Calculate it properly.
7557
7558 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7559         
7560         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7561         called directly.
7562
7563         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7564         instances.
7565         (emit_extra_methods): Add another table mapping method indexes to 
7566         offsets in the extra_method_info table.
7567
7568         * mini.h: Bump AOT file format version.
7569         
7570         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7571         and mono_aot_get_method_from_token () into one function.
7572
7573 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7574
7575         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7576         separate counter.
7577
7578 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7581         methods.
7582
7583         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7584         disable_aot.
7585
7586         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7587
7588         * mini.h: Bump aot file format version.
7589
7590         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7591         AOT file can contain native code for methods which are not in the METHOD
7592         table. Generate code for non-sharable generic instances of generic methods
7593         found in the METHODSPEC table.
7594         
7595         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7596         encoding generic type handles.
7597
7598         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7599         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7600
7601         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7602         macros + MONO_ADD_INS.
7603
7604         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7605         context as well.
7606
7607         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7608
7609         * mini.h: Bump aot file format version.
7610
7611         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7612
7613 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7614
7615         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7616         platforms, with definable stack alignment value.  Set to 16 now
7617         for all platforms.
7618
7619         * mini.c, mini.h, driver.c: Command line option for disabling
7620         stack alignment.
7621
7622 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7623
7624         * basic-simd.cs: Tests for new methods in Vector4ui.
7625
7626 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7627
7628         * mini-ops.h: Add packed int shuffle.
7629         
7630         * cpu-x86.md: Same.
7631
7632         * mini-x86.c (mono_arch_output_basic_block): Same.
7633
7634         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7635         extract mask, max, min, shuffle.
7636
7637         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7638
7639 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7640
7641         * basic-simd.cs: Tests for new methods in Vector8us.
7642
7643 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7644
7645         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7646         RuntimeTypeHandle, not a TypedReference.
7647
7648 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7649
7650         * simd-intrinsics.c: remove relocations.
7651
7652 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7653
7654         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7655         optimizations from the x86 backend.
7656
7657 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7658
7659         * simd-methods.h, simd-intrinsics.c: debloat method names and
7660         prepare for no relocations.
7661
7662 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7663
7664         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7665         
7666         * cpu-x86.md: Same.
7667
7668         * mini-x86.c (mono_arch_output_basic_block): Same.
7669
7670         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7671         extract mask, max, min and sum of absolute differences.
7672
7673         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7674         method name.
7675
7676 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7677
7678         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7679         Renamed one test for consistency.
7680
7681 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7682
7683         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7684         fix to the code that deal with other blocks.
7685
7686 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7687
7688         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7689
7690 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7693         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7694         able to process the source reg.
7695
7696 2008-10-16  Martin Baulig  <martin@ximian.com>
7697
7698         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7699
7700         * inssel.brg: Add `OP_HARD_NOP'.
7701
7702         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7703
7704         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7705         `OP_HARD_NOP' instruction when running inside the debugger.
7706
7707         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7708         `OP_HARD_NOP' instruction when running inside the debugger.
7709
7710 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7713         now works. The issue with the regalloc tripping up no longer
7714         happens.
7715
7716         * simd-intrinsics.c (load_simd_vreg): Same.
7717
7718 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7719         
7720         * basic-simd.cs: Tests for new Vector8ui methods.
7721
7722 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7725         only for type. This fixes crashes where MonoInst::klass is checked
7726         for ops of type != VTYPE or OBJ.
7727
7728         * simd-intrinsics.c (load_simd_vreg): Same.
7729
7730 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7731
7732         * mini-ops.h: Add ops for packed shuffle/max/avg and
7733         extract mask.
7734         
7735         * cpu-x86.md: Same.
7736
7737         * mini-x86.c (mono_arch_output_basic_block): Same.
7738
7739         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7740         extract mask.
7741
7742         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7743         to emit extract mask op.
7744
7745         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7746         to emit word shuffles.
7747
7748 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7749
7750         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7751         the largest alignment needed by a variable, but at least
7752         sizeof(gpointer).
7753
7754 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * basic-simd.cs: Tests for the fixes in the last commit.
7757
7758 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7759
7760         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7761         no longer handles STACK_PTR input.
7762
7763         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7764
7765         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7766         get_simd_vreg   but handles STACK_PTR input.
7767
7768         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7769         as the input can be an arbitrary pointer.
7770
7771         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7772         LDADDR local optimization directly otherwise use a store op.
7773
7774 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7775
7776         * basic-simd.cs: Tests for dup low and dup high.
7777
7778 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * mini-ops.h: Add dup low and dup high ops.
7781         
7782         * cpu-x86.md: Same.
7783
7784         * mini-x86.c (mono_arch_output_basic_block): Same.
7785
7786         * simd-intrinsics.c (vector4f_intrinsics): Same.
7787
7788 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7789
7790         * basic-simd.cs: Tests for recently added functionality.
7791
7792 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * mini-ops.h: Add remaining sse1 fp ops.
7795         
7796         * cpu-x86.md: Add remaining sse1 fp ops.
7797
7798         * mini-x86.c (mono_arch_output_basic_block): Same.
7799
7800         * mini.h: Add enum for simd FP compare conditions.
7801
7802         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7803
7804         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7805         so the backed can generate the appropriate op.
7806
7807 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7808         This patch squeese one more byte from the SimdIntrinsc struct.
7809
7810         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7811         a a shift amount intead of simply or'ing it.
7812
7813         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7814
7815         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7816         byte so we can have an aditional flags field without increasing struct size.
7817
7818         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7819         against the simd_supported_versions bitmask.
7820
7821         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7822
7823 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7824
7825         * mini.c: remove rawbuffer code (the only use here is unsafe because
7826         it takes locks during signal handling and the kernel now provides much
7827         better info in proc/pid/smaps these days).
7828
7829 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7832         OP_X86_PUSH_OBJ. Fixes #434620.
7833
7834         * objects.cs: Add a test.
7835         
7836 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7837
7838         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7839         that the packuswb/packusdw don't work with unsigned numbers for what
7840         would be negative numbers in signed format.
7841
7842         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7843         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7844
7845         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7846
7847         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7848
7849         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7850
7851         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7852
7853         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7854         add more ops.
7855
7856         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7857         version as the enum in mini.h.
7858
7859         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7860         for sse3 ops, check the simd_version field if present. This way the code
7861         works with all versions of sse.
7862
7863 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7864
7865         * simd-intrinsics.c: Fixed intrinsic name typo.
7866
7867         * mini.h: Added missing simd exported function.
7868
7869         * basic-simd.cs: Added tests for Vector4ui.
7870         Fixed broken test for Vector16b.
7871
7872 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7875         the max length to 64.
7876
7877 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7878
7879         * method-to-ir.c: Only do the fast virtual generic method call for
7880         non-wrapper methods.
7881
7882         * mini.h, mini-trampolines.c: The new generic virtual remoting
7883         trampoline handles virtual method calls via the vtable (as done by
7884         the fast virtual generic method calls) to remoting proxies.
7885
7886         * mini.c (mono_jit_create_remoting_trampoline): For generic
7887         methods reate a generic virtual remoting trampoline.
7888
7889         * mini-amd64.h: Enable fast virtual generic method calls again.
7890
7891 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7892
7893         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7894         restore registers when doing tail calls.
7895
7896 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7897
7898         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7899         Vector4ui.
7900
7901 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7902
7903         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7904
7905 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7906
7907         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7908
7909 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * basic-simd.cs: Retrofit for API changes.
7912
7913 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7914
7915         * mini-ppc.c: Handle integer stack arguments for tail calls.
7916
7917 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7918
7919         * optflags-def.h: Removed sse3 optimization.
7920
7921         * driver.c: Same.
7922
7923         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7924         sse3.
7925
7926         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7927
7928         * mini.h: Added enumeration with simd versions.
7929
7930         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7931         for detecting SSE3.
7932
7933         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7934
7935         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7936
7937 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7938
7939         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7940
7941         * basic-simd.cs: Fixed test naming.
7942
7943 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7944
7945         * mini-ops.h: Added ops for packed and saturated math, shifts
7946         and packing/unpacking.
7947
7948         * cpu-x86.md: Added descriptors for the above ops.
7949
7950         * mini-x86.c: Added code to emmit the above ops.
7951
7952         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7953
7954 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7955
7956         * aot-compiler.c (compile_method): Enable AOT for generic code.
7957
7958         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7959
7960 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7961
7962         * mini.c: add a workaround for a common screwup that ends up blamed
7963         to mono (other processes blocking signal delivery).
7964
7965 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7968         in the LDFLD/STFLD opcodes. Fixes #432673.
7969
7970         * iltests.il.in: Add a new test.
7971
7972 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7973
7974         * mini-arm.c: attach the thread in unmanaged->managed transitions
7975         using delegates (bug #433148).
7976
7977 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7978
7979        * basic-simd.cs: Use new ShuffleSel constants.
7980
7981 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7982
7983         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7984
7985         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7986         only disable simd intrinsics if no sse2 is detected.
7987
7988         * optflags-def.h: Added sse3.
7989
7990         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7991         is disabled.
7992
7993 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7994
7995         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7996         when adding delegate-invoke wrappers.
7997
7998 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7999
8000         * Makefile.am: Reenable the simd tests.
8001
8002 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8003
8004         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8005           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8006           other vreg is allocated to that hreg.
8007
8008         Contributed under MIT/X11 license.
8009
8010 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8011
8012         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8013         yet checked in.
8014
8015 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * basic-simd.cs: New test suite for SIMD intrinsics.
8018
8019         * Makefile.am: Added new tests.
8020
8021 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8022
8023         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8024
8025         * mini-ops.h: Same.
8026
8027         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8028
8029         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8030         using SSE2 aware opcodes.
8031
8032         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8033         is enabled, this code path is only reachable if conversion ops are emmited after
8034         mono_method_to_ir.
8035
8036         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8037
8038         This optimization saves 6 bytes per conversion against the old version.
8039
8040 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * aot-compiler.c (compile_method): Don't skip methods referencing 
8043         generic methods without a corresponding entry in token_info_hash, since
8044         encode_method_ref () can handle all generic methods now.
8045
8046         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8047         generic context is set.
8048         
8049         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8050         generic sharing of LDTOKEN.
8051
8052 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8053
8054         * mini-amd64.h: Temporarily disabled fast virtual generic method
8055         calls because it breaks the System.Runtime.Remoting tests.
8056
8057 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8058
8059         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8060
8061         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8062         so inlining actually works.
8063         (check_inline_caller_method_name_limit): Ditto.
8064
8065 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8066
8067         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8068         64 bit safety (from Olaf Hering and Andreas Farber).
8069
8070 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8071         
8072         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8073         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8074         unused virtual call support code.
8075
8076         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8077         
8078         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8079         which can't use aot trampolines.
8080         (decode_patch): Don't create aot trampolines for methods which can't use
8081         them.
8082
8083         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8084         use aot trampolines.
8085
8086         * mini.h: Bump AOT image format version.
8087         
8088 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8089
8090         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8091         to save_token_info () since cmethod is inflated for constrained calls.
8092
8093         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8094
8095 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8096
8097         * Makefile.am: Add build rules for ppc64.
8098         This avoids the build failing at pedump with unresolved symbols
8099         due to lack of arch_sources. Instead it will now fail earlier
8100         due to lack of cpu-ppc64.md.
8101
8102         Contributed under MIT/X11 license.
8103
8104 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8105
8106         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8107         tail calls.
8108
8109         * iltests.il.in: Add test case for tail call with many arguments.
8110
8111 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8114         to the fast virtual generic method code until the aot case is fixed.
8115
8116 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8117
8118         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8119
8120 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8121
8122         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8123         thunks.
8124
8125 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8126         
8127         * simd-intrinsics.c: Forgot to add this one.
8128
8129         * mini-codegen.c: Fix macro in case SIMD is not supported.
8130
8131 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8132         
8133         This patch land initial JIT support for simd intrinsics.
8134
8135         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8136
8137         * Makefile.am: Added simd-intrinsics.c
8138
8139         * simd-intrinsics.c: New file with simd instrinsic related
8140         code.
8141
8142         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8143
8144         * cpu-x86.md: Add simd related instructions.
8145
8146         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8147
8148         * driver.c: Added two new --regression variants.
8149
8150         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8151
8152         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8153
8154         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8155         extract some complicated logic to helper functions.
8156
8157         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8158
8159         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8160
8161         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8162         the specialized simplification pass.
8163
8164         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8165
8166         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8167
8168         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8169         table.
8170
8171         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8172         if MONO_ARCH_NEED_SIMD_BANK is defined.
8173
8174         * mini-ops.h: Added the new simd ops.
8175
8176         * mini-x86.c: Added mono_arch_xregname.
8177
8178         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8179
8180         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8181
8182         * mini-x86.h: Define simd related MONO_ARCH macros.
8183
8184         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8185
8186         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8187
8188         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8189         MONO_CLASS_IS_SIMD to deal with simd related IR.
8190
8191         * mini.h (MonoInst): Added spill_var to the backend union.
8192
8193         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8194
8195         * mini.h: Added forward declarations of the new simd fuctions.
8196
8197         * optflags-def.h: Added new optimization names SIMD.
8198
8199         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8200
8201         * regalloc.h: Added support for working with 3 register banks.
8202
8203         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8204
8205         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8206
8207 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8208
8209         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8210
8211 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8214         instead of one on 64 bit systems.
8215
8216         * method-to-ir.c: Remove unused includes.
8217
8218 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8221         cfg->used_int_regs, since the two are different on arm.
8222
8223 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8224
8225         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8226         mono_method_get_vtable_index() to get the vtable index.
8227
8228 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8229
8230         * method-to-ir.c (mono_method_to_ir2): Don't create native
8231         wrappers for array methods, because they're never called (and if
8232         they were called they wouldn't work).
8233
8234 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8235
8236         * method-to-ir.c (mono_method_to_ir2): Array methods are
8237         special-cased and must not be invoked indirectly via the (M)RGCTX
8238         when generic sharing is turned on.  Fixes #431413.
8239
8240 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8241
8242         * method-to-ir.c: When generic sharing is active, call
8243         non-interface virtual generic methods via the standard trampoline.
8244
8245         * mini-trampolines.c: Handle virtual generic shared methods.
8246
8247         * mini.h, mini-x86.c, mini-x86.h: New argument for
8248         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8249         method thunks and which is the trampoline to call if the lookup
8250         fails.  Enable the virtual generic method thunk for x86.
8251
8252         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8253         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8254         argument but assert that it's NULL, because these archs don't yet
8255         implement the virtual generic method thunk.  Changes in the IMT
8256         thunk data structures.
8257
8258 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * aot-compiler.c (emit_globals): Avoid invalid characters in
8261         the static linking symbol.
8262
8263         * objects.cs: Add a test for the range check optimization. Fix warnings.
8264
8265         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8266         optimization from the current JIT.
8267
8268         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8269         later in decompose_array_access_opts () to allow more optimizations.
8270
8271         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8272         mono_decompose_soft_float () for consistency.
8273
8274         * mini-ops.h: Fix arguments of OP_STRLEN.
8275
8276         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8277         into a separate function.
8278         (reset_cast_details): Ditto.
8279         (handle_unbox): Save cast details. Fixes #431254.
8280
8281         * method-to-ir.c: Remove some obsolete FIXMEs.
8282
8283 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8284
8285         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8286
8287 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8288
8289         * mini-codegen.c: More work on macros to make them
8290         ready for multiple regbanks.
8291
8292 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8293
8294         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8295
8296         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8297
8298 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8299
8300         * mini-codegen.c (mono_spillvar_offset): Proper support for
8301         multiple regbanks.
8302
8303 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8306         the stack overflow changes.
8307
8308 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8309
8310         * mini-codegen.c: Make all bank macros depend on reg_bank.
8311
8312         * mini-codegen.c (mono_local_regalloc): Make free mask
8313         initialization regbank aware.
8314
8315 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * mini-codegen.c (mono_local_regalloc): Extract callee
8318         mask selection to a function and make it regbank aware.
8319
8320 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8321
8322         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8323         code to deal with many regbanks.
8324
8325 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * mini-codegen.c: More fp->regbank changes.
8328
8329 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8330
8331         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8332         of a hardcoded constant.
8333
8334 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8335
8336         * method-to-ir.c (type_from_stack_type): Fix typo.
8337
8338 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * mini-ia64.c (emit_move_return_value): Convert float return values to
8341         double.
8342
8343         * objects.cs: Add a new test.
8344         
8345         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8346         VARARG methods to fix an assert later.
8347
8348         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8349         end so it at least compiles.
8350
8351 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8352
8353         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8354
8355 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8356
8357         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8358         optimization to a new function (emit_optimized_ldloca_ir) and enable
8359         it for both ldloca and ldloca_s.
8360
8361 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8364         gshared CASTCLASS code.
8365
8366         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8367         amd64, where the libc stack unwinder encounters stack frames referring to
8368         native code in unmapped memory.
8369
8370         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8371         sharing.
8372
8373         * generics.cs: Add new test.
8374
8375 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8376
8377         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8378         add a check that one of the ARM_FPU_ constants is defined.
8379
8380         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8381         
8382         * mini-exceptions.c: Fix build on non-altstack platforms.
8383
8384         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8385         sharing of vtypes.
8386
8387         * ir-emit.h: Add a comment to NEW_PCONST.
8388
8389         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8390
8391         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8392
8393         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8394         after the changes to MonoJitDomainInfo.
8395
8396 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8397
8398         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8399
8400 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8401
8402         * mini-ppc.c: Compiler warning fixes.
8403
8404 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8405
8406         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8407         for pinvokes.
8408
8409 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8410
8411         * exceptions-ppc.c, mini-ppc.h: Compile
8412         mono_arch_handle_altstack_exception() on Darwin, too.
8413
8414 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8415
8416         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8417         work on archs which don't have generic sharing implemented, only
8418         without the vtable_arg.
8419
8420 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8421
8422         * mini.c: Added comment explaining why delegate ctor icall
8423         wrappers are compiled.
8424
8425 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8426
8427         * mini.c: Don't produce trampolines to delegate ctor icall
8428         wrappers but compile them upfront.
8429
8430 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8431
8432         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8433         runtime-set function when going back to managed code. Currently this
8434         is used to set back the protection on the soft ovf pages and/or to
8435         throw the stack overflow exception that happened in unmanaged code.
8436
8437 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8438
8439         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8440         runtime-set function when going back to managed code. Currently this
8441         is used to set back the protection on the soft ovf pages and/or to
8442         throw the stack overflow exception that happened in unmanaged code.
8443
8444 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8445
8446         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8447         the support code for restoring stack protection after stack overflows
8448         that happen in unmanaged code. Don't set the exec permission on the
8449         soft overflow area.
8450
8451 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8452
8453         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8454         delegate->method_ptr is set. Fixes #428054.
8455
8456 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8457
8458         * tests.cs: Rename to ratests.cs.
8459
8460         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8461         emit_get_rgctx_... functions.
8462
8463 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8464
8465         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8466
8467 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8468
8469         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8470         before asserting that method is sharable.
8471
8472 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8473
8474         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8475         whether method needs a static RGCTX wrapper used instead of
8476         complex conditions.
8477
8478         * generic-sharing.c, mini.h: A few functions moved to
8479         metadata/generic-sharing.c.
8480
8481 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8482
8483         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8484         Generic code sharing for value types, which essentially means
8485         treating value type methods like static methods.  The RGCTX is
8486         passed in the same way.
8487
8488 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8489
8490         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8491         opcode when creating multi-dimensional arrays of open types.
8492
8493         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8494         open generic types.
8495
8496         * generics.cs: Add a test.
8497
8498         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8499
8500 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8503
8504         * mini.c (mini_method_compile): Set it when running under the debugger. 
8505
8506         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8507         vreg optimization if the flag is set.
8508
8509         * driver.c (mono_main): Add --attach= option to pass options to
8510         the attach agent.
8511
8512         * mini.c (sigquit_signal_handler): Start the attach agent.
8513
8514         * ssapre.c: Disable this to save space since it is not yet ported to
8515         linear IR.
8516
8517         * regalloc2.c: Disable this to save space.
8518
8519         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8520
8521 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8522
8523         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8524         the -v option useful again.
8525
8526 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8529         --break-at-bb.
8530
8531         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8532         arrays of arrays. Fixes #428406.
8533
8534         * method-to-ir.c (mini_emit_castclass): Ditto.
8535
8536         * objects.cs: Add new test.
8537         
8538 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8539
8540         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8541         was wrong at it choked against target_type_is_incompatible for byref types.
8542
8543 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8546         places.
8547
8548 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8549
8550         * mini-exceptions.c: update a few more exceptions-related counters.
8551
8552 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8553
8554         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8555         new functions to allocate from persistent mempools.
8556
8557 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8558
8559         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8560         multiple register banks in the future.
8561
8562         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8563
8564 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8565
8566         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8567
8568         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8569
8570         * mini.h: Export type_to_eval_stack_type.
8571
8572         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8573         is only ins->klass of byref types.
8574
8575 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8578         (mini_emit_memcpy2): Ditto.
8579
8580         * mini-amd64.c: Fix a warning.
8581
8582 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8583
8584         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8585         linking.
8586
8587 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * method-to-ir.c: Extract stloc micro-optimization to a
8590         function and apply it to all cases.
8591
8592 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8593
8594         * method-to-ir.c: Don't fail generic code sharing in cases we
8595         already support.
8596
8597 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8598
8599         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8600
8601 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8602
8603         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8604         implementation.
8605
8606 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8607
8608         * trace.c: make tracing more useful and correct, with per-thread
8609         id and indent info.
8610
8611 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8612
8613         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8614         doing a method call and the argument is an R4.
8615
8616 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8617
8618         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8619         generic methods.
8620
8621 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8622
8623         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8624
8625 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8628         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8629
8630 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * driver.c: Add a --agent argument (not supported yet) to load managed
8633         agent assemblies before loading the main assembly, similarly to how the
8634         Java VM handles agents.
8635
8636 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8637
8638         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8639         function to do stack layout of local variables.
8640
8641 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8642
8643         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8644         calculation.
8645
8646 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8647
8648         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8649         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8650         JIT if DISABLE_JIT is defined.
8651
8652         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8653         defined.
8654
8655 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8656
8657         * iltests.il.in: Disable the fconv test on PPC (the result is
8658         undefined according to ECMA).
8659
8660 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8661
8662         * iltests.il.in: Enable tail call tests for PPC.
8663
8664         * mini.h: Add variable for storing incoming valuetype argument
8665         addresses for tail calls.
8666
8667         * mini-ppc.c: Implement valuetype arguments and return values for
8668         tailcalls on Linux.
8669
8670 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8671
8672         * mini-ppc.c: Partially implement tail calls (struct arguments and
8673         return values not supported).
8674
8675         * method-to-ir.c: Enable tail calls on PPC.
8676
8677 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8678
8679         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8680         runtime-invoke wrappers to work around the problem of them getting
8681         assigned to a random class.
8682
8683         * aot-runtime.c (mono_aot_get_method): Ditto.
8684         
8685 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8686
8687         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8688         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8689
8690 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8691
8692         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8693         until they're implemented properly.
8694
8695         * exceptions-ppc.c: Use arch-independent exception-handling code
8696         instead of custom one.
8697
8698         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8699         for Linear IR.
8700
8701         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8702
8703         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8704         applies when __powerpc__ is defined.
8705
8706 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8709         methods to their code to avoid computing the full name of wrappers and
8710         doing a lookup in a string hash table.
8711
8712 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8713
8714         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8715         we identify bblocks before method_to_ir () is ran.
8716
8717         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8718         Also avoid optimizing branches pointing to themselves.
8719
8720         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8721
8722 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8723
8724         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8725
8726 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8727
8728         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8729         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8730         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8731         'buf'.
8732
8733         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8734         jumped to the same entry in plt_jump_table.
8735
8736 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8737
8738         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8739         dynamic images.
8740
8741 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8744         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8745         #421807.
8746
8747 2008-08-29  Geoff Norton  <gnorton@novell.com>
8748
8749         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8750         segment, and doesn't properly handle .space as .text.  Fixes
8751         AOT Mach/ARM
8752
8753 2008-08-29  Geoff Norton  <gnorton@novell.com>
8754
8755         * mini.c: Disable the mach exception handler when running on 
8756         ARM
8757
8758 2008-08-29  Geoff Norton  <gnorton@novell.com>
8759
8760         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8761         globals on Darwin/ARM
8762
8763 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8766         since too many things depend on it. Instead, call 
8767         mono_runtime_set_no_exec ().
8768         
8769         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8770         the new JIT.
8771
8772         * aot-compiler.c: Add an 'asm-only' AOT option.
8773
8774         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8775                 
8776         * aot-compiler.c (compile_method): Disable gshared support for now as it
8777         doesn't yet work.
8778
8779 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8780
8781         * mini-amd64.h : Fix a compiler warning.
8782
8783         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8784           Changed to use a callback function to retrieve the unwind info.
8785           This avoids problems observed when code blocks were removed by
8786           unloading an app domain.
8787
8788         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8789           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8790           to work properly.
8791
8792         Contributed under MIT/X11 license.
8793
8794 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8795
8796         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8797           case to keep the stack aligned to 8.
8798
8799         Contributed under MIT/X11 license.
8800
8801 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8802
8803         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8804         avoid repeated linear searches.
8805
8806 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8809         methods it can't handle.
8810         
8811         * aot-compiler.c (add_method): Avoid adding a method twice.
8812         (add_wrappers): Add runtime invoke wrappers for all methods.
8813
8814         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8815         function to create an aot-compatible version of this trampoline.
8816
8817         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8818
8819 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8820
8821         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8822
8823         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8824         with a generic sharing failure.
8825
8826         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8827
8828         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8829         CEE_RETHROW. Fixes #419634.
8830
8831         * mini.c (mono_method_to_ir): Ditto.
8832
8833         * exceptions.cs: Add a new test.
8834         
8835         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8836         to mono_type_stack_size_internal () since some callers might not pass in
8837         an rgctx.
8838
8839         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8840         instrument_prolog. Fixes #419878.
8841
8842         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8843         doubles in soft float mode volatile.
8844
8845 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8848
8849         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8850         to handle soft float correctly.
8851
8852         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8853         the fast path.
8854
8855         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8856
8857         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8858         to sp, since the generics catch code requires it.
8859
8860         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8861         copying.
8862
8863         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8864         mono_arch_emit_imt_argument ().
8865
8866         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8867
8868         * mini-arm.c tramp-arm.c: Generic sharing updates.
8869
8870 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * mini-arm.c: Fix the arm build.
8873
8874         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8875         handling enums, generic instances and generic sharing.
8876         (mini_type_stack_size_full): Ditto.
8877
8878         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8879         
8880         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8881
8882         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8883
8884         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8885         trampolines.
8886
8887         * mini-arm.c: Various small generic sharing changes.
8888
8889         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8890         this for x86.
8891         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8892         custom code.
8893
8894         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8895         helper function to return a generic class init trampoline.
8896
8897         * method-to-ir.c mini.c: Use it.
8898         
8899         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8900         arch-specfic function to return a generic class init trampoline.
8901
8902         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8903         the GENERIC_CLASS_INIT custom code.
8904
8905         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8906         a fatal error, not a sharing failure.
8907
8908         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8909         needed.
8910
8911         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8912         trampoline argument from MONO_ARCH_VTABLE_REG.
8913
8914         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8915         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8916         argument, and pass the vtable in VTABLE_REG.
8917
8918         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8919         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8920         argument, and pass the vtable in VTABLE_REG.
8921         (mono_arch_create_trampoline_code_full): Remove some special casing for
8922         the rgctx fetch trampoline.
8923
8924         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8925         Fixes #419273.
8926
8927         * iltests.il: Add a test for it.
8928
8929 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8930
8931         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8932
8933         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8934         no longer needed.
8935
8936         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8937         use mono_jit_info_table_find () to avoid recursion.
8938         (mono_delegate_trampoline): Add a sync wrapper here.
8939
8940         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8941         here.
8942
8943         * mini.c (mono_method_to_ir): Ditto.
8944         
8945         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8946         add_sync_wrapper argument. Don't add a sync wrapper here.
8947         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8948
8949         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8950         
8951 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8952
8953         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8954           of nonvolatile registers back from MonoContext to CONTEXT.
8955
8956         Contributed under MIT/X11 license.
8957
8958 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8959
8960         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8961           arguments on Winx64 there are only 4 argument registers.  For this
8962           logic to work the last argument must be pulled from the stack.  
8963
8964         Contributed under MIT/X11 license.
8965
8966 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8969
8970         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8971         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8972         encode/decode_method_ref ().
8973
8974         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8975
8976         * aot-runtime.c (decode_patch): Ditto.  
8977
8978         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8979         MONO_PATCH_INFO_METHOD.
8980
8981         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8982         MonoGenericJitInfo.
8983
8984         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8985         MonoGenericJitInfo.
8986
8987         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8988
8989         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8990         one from the caller.
8991
8992         * aot-runtime.c (decode_generic_inst): New function to decode and
8993         return a interned generic inst.
8994         (decode_klass_ref): Use it.
8995         (decode_method_ref): Ditto.
8996
8997         * aot-compiler.c (emit_exception_debug_info): Save 
8998         jinfo->has_generic_jit_info too.
8999
9000 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9003
9004         * iltests.il.in: Add a test for fconv_to_i.
9005
9006         * liveness.c: Disable the liveness2 pass for now to save space.
9007
9008         * regalloc2.c: Include mempool-internals.h to fix warnings.
9009
9010         * aot-compiler.c (encode_method_ref): Encode the context of generic
9011         instance methods.
9012
9013         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9014         the context saved in the aot file.
9015
9016         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9017
9018         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9019
9020         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9021         volatile so they won't be optimized away.
9022
9023 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9024
9025         * ssa.c:
9026         * ssa2.c:
9027         * mini.c:
9028         * regalloc2.c:
9029         * dominators.c: Remove duplicated functions that now are in
9030         mempool-internals.h.
9031
9032 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * aot-compiler.c: Fix warnings.
9035
9036         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9037
9038         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9039
9040         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9041         as the patch type.
9042
9043         * mini.c (mono_resolve_patch_target): Ditto.
9044         
9045         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9046         (encode_klass_ref): Add support for encoding VARs/MVARs.
9047
9048         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9049
9050         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9051         the handling of the got entries into a separate 'decode_got_entry' function.
9052         Add support for RGCTX_FETCH.
9053
9054         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9055         clobbered by the trampoline code.
9056
9057         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9058         not clobbered by the indirect calling code.
9059
9060 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9063         to fix the build.
9064
9065 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9068         signature using the compilation mempool otherwise we would leak it.
9069
9070 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9073         mono_emit_abs_call ().
9074
9075         * patch-info.h: Add GENERIC_CLASS_INIT.
9076
9077         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9078
9079         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9080         as their target as a near call.
9081
9082         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9083         ABS handling code.
9084         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9085
9086         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9087         call to a runtime function described by a patch.
9088
9089         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9090         mono_emit_abs_call, this has the advantage that the ABS handling code in
9091         mono_codegen () can handle them both, and can handle other stuff in the
9092         future without additional code.
9093
9094         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9095         entry.
9096         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9097         abs addresses.
9098
9099         * mini.h: Add missing bblock related prototypes.
9100
9101         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9102         reverse_inst_list_len fields.
9103
9104         * mini.c: Refactor this file a bit by moving branch optimizations to 
9105         branch-opts.c.
9106
9107         * method-to-ir.c: Merge generic sharing changes missed earlier.
9108
9109         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9110
9111         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9112         shared patches. Process METHODCONST as a shared patch.
9113
9114         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9115         as it crashes on the 2.0 mscorlib.
9116
9117         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9118         to cause crashes.
9119         
9120         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9121         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9122         by IMT.
9123
9124         * aot-compiler.c: Reorganize the got handling code to be a bit more
9125         understandable.
9126
9127 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9130         mono_patch_info_equals/hash, and use it to massively simplify
9131         get_plt_index ().
9132
9133         * mini.c (mono_patch_info_hash): Simplify this and add support for
9134         more patch types.
9135
9136         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9137
9138         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9139         handling code, since an offset is not enough to identify a trampoline.
9140
9141         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9142
9143 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9144
9145         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9146
9147         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9148
9149         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9150
9151         * decompose.c: PPC decompositions for various ops.
9152
9153         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9154
9155 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9156
9157         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9158         call the generic trampoline code using a call, instead of a jump, to
9159         remove some special casing from the generic trampoline code.
9160
9161         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9162         (mono_codegen): Ditto.
9163
9164         * aot-compiler.c aot-runtime.c: Ditto.
9165
9166         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9167
9168         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9169         helper function to find the offset corresponding to a lazy fetch trampoline.
9170
9171         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9172         when doing generic sharing.
9173
9174         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9175         places.
9176         
9177         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9178         mini-trampolines.c to be with the other trampoline creation functions.
9179
9180         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9181         as it is equal to method->signature in most cases, add a 
9182         mono_emit_method_call_full variant which takes a signature and an imt
9183         argument as well.
9184
9185 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9186
9187         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9188         to this function, since it could be computed easily from the method 
9189         argument.
9190         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9191         more.
9192
9193         * method-to-ir.c mini.c: Remove references to 
9194         compile_generic_method_wo_context.
9195
9196         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9197         generic method calls.
9198         
9199         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9200         dimensional non-szarrays.
9201
9202         * mini.c (mini_init): Register mono_array_new_1.
9203
9204         * jit-icalls.c (mono_array_new_1): New jit icall.
9205
9206         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9207         pointing to the method.
9208
9209         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9210         method addresses belonging to METHOD_JUMP patches in the 
9211         jump_target_got_slot_hash.
9212         (mono_aot_load_method): Ditto.
9213
9214         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9215         METHOD_JUMP patches.
9216
9217         * mini.c (mini_create_jit_domain_info): New helper function which 
9218         initializes/frees domain->runtime_info.
9219         (mini_free_jit_domain_info): Ditto.
9220         (mini_init): Install the domain hook functions with the runtime.
9221
9222         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9223         information maintained by the JIT.
9224
9225         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9226         insertion into jump_table_hash into mono_codegen (), also implement proper
9227         locking.
9228
9229         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9230         tail calls, it is already done by the aot code.
9231         
9232         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9233         mechanism on amd64.
9234
9235         * iltests.il.in: Make the jmp test a bit more complex.
9236
9237         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9238         generic instances which doesn't have a token.
9239
9240         * aot-runtime.c (decode_method_ref): Ditto.
9241         
9242         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9243         can handle this case now.
9244         (handle_box): Ditto.
9245
9246 2008-08-15  Geoff Norton  <gnorton@novell.com>
9247
9248         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9249         debugging check.
9250
9251 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9252
9253         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9254         calling generic methods.
9255
9256         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9257
9258         * aot-runtime.c (decode_patch_info): Ditto.
9259
9260         * mini.c (mono_resolve_patch_target): Ditto.
9261         
9262         * patch-info.h: Add METHOD_RGCTX.
9263
9264         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9265
9266 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9267
9268         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9269         arguments in registers.
9270
9271         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9272         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9273
9274         * mini.c (mini_method_compile): Abort aot compilation for generic
9275         methods if generic sharing is disabled.
9276         
9277         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9278         an mrgctx.
9279
9280         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9281         requiring an mrgctx.
9282
9283         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9284         store instructions when converting a vcall to a normal call.
9285
9286         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9287         mono_arch_find_jit_info.
9288
9289 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9292         avoid calling mono_method_full_name () for every method even if the
9293         env var is not set.
9294         (check_inline_caller_method_name_limit): Ditto.
9295
9296 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9299         assemblies in one run.
9300
9301         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9302         skipped methods if it is not 0.
9303
9304         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9305
9306 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9307
9308         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9309           MONO_ARCH_HAVE_UNWIND_TABLE.
9310
9311         Contributed under MIT/X11 license.
9312
9313 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9314
9315         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9316           from default optimizaton list on Winx64.
9317
9318         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9319
9320         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9321           the LMF from the MonoJitTlsData structure.
9322
9323         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9324
9325         Contributed under MIT/X11 license.
9326
9327 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9328
9329         * mini.c (sigsegv_signal_handler): Fix the build.
9330
9331         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9332         assembly->aot_module.
9333
9334         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9335         hash table. This simplifies and speeds up a lot of code, and fixes support
9336         for .netmodules.
9337
9338         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9339         with the runtime.
9340
9341         * mini-exceptions.c: Ditto.
9342         
9343         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9344         'native_offset' argument, since these are computed in the 
9345         mono_find_jit_info () function.
9346
9347         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9348         is used by exceptions-ppc.c.
9349
9350         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9351         mono_arch_find_jit_info ().
9352         
9353         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9354         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9355         generic code in mini-exceptions.c.
9356
9357 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9358
9359         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9360
9361         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9362         
9363         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9364         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9365         called while holding the loader lock. Fixes #415608.
9366         (mono_aot_get_method_from_token_inner): Ditto.
9367
9368 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9371         to reduce differences between this and the generic implementation in
9372         mini-exceptions.c.
9373         (ves_icall_get_frame_info): Ditto.
9374
9375         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9376
9377         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9378         longer neccesarry.
9379
9380         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9381         mono_arch_get_call_filter () and make it non-static, for consistency with the
9382         other architectures.
9383
9384 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9385
9386         * mini.c:
9387         * local-propagation.c:
9388         * mini-x86.c: Correct the name of arch defines.
9389
9390 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9391
9392         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9393         NO_EMULATE_LONG_SHIFT_OPS define.
9394
9395 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9396
9397         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9398         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9399
9400         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9401         MACH fixes. Merged from the 2.0 branch.
9402
9403         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9404
9405         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9406         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9407
9408         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9409
9410         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9411         mono_marshal_get_native_wrapper () signature changes.
9412
9413 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9414
9415         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9416         conversion bug under arm.
9417
9418 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9421
9422         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9423         with overflow checking.
9424
9425 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9426
9427         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9428         to the genmdesc.pl file
9429
9430 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9433         arg_array in the soft-float versions of the LOAD/STORE macros.
9434
9435         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9436         implementation.
9437
9438         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9439
9440 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9443         a float HFA. Fixes #413621.
9444
9445 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9446
9447         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9448         frame_size to args_size. Fixes build.
9449
9450 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9453         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9454
9455         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9456         the stack are not unaligned. Fixes #413247.
9457         
9458 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9459
9460         * mini.c: update jitted methods performance counters.
9461
9462 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9463
9464         * mini-exceptions.c: increase the exceptions thrown performance
9465         counter in mono_handle_exception ().
9466
9467 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9468
9469         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9470         can work with netmodules.
9471
9472 2008-07-28  Geoff Norton  <gnorton@novell.com>
9473
9474         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9475         regression tests.
9476
9477 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9478
9479         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9480         correct place.
9481
9482 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9483
9484         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9485           The float param registers and other param registers must be the 
9486           same index on Windows x64.
9487
9488         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9489           ArgValuetypeAddrInIReg argument case.  Setting the argument
9490           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9491
9492         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9493           variable computed above as the copy length for arguments of storage
9494           type ArgValuetypeAddrInIReg.
9495
9496         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9497           ArgValuetypeAddrInIReg argument case.  This case will rely on
9498           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9499
9500         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9501           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9502           jump and tail call instructoins as they do not follow the typical call behavior.
9503
9504         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9505           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9506           local variable and pass the local variable by reference to the called method.
9507
9508         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9509           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9510           of a struct is passed in a register it must be saved with the other
9511           volatile argument on the stack.
9512
9513         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9514           frame pointer the stack adjustment value must be saved to the unwind 
9515           info structure.
9516
9517         Contributed under MIT/X11 license.
9518
9519 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9520
9521         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9522         which got lost in the merge.
9523
9524 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9525
9526         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9527         build.
9528
9529         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9530         
9531         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9532         icalls, since they won't be patched.
9533
9534         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9535         different code sequence when running under valgrind to prevent some valgrind
9536         errors.
9537
9538         * iltests.il.in: Add new regression test.
9539
9540         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9541         end with a throw.
9542
9543         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9544         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9545
9546         * iltests.il.in: Add new test.
9547
9548         * aot-compiler.c: Fix some warnings.
9549
9550         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9551         Fixes #412494.
9552
9553 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9556         (mini_usage_jitdeveloper): Add a missing --wapi option.
9557
9558 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * mini-codegen.c: Simplify the is_fp macros.
9561         (free_up_ireg): Remove, use free_up_reg instead.
9562         (free_up_reg): Fix the fp case.
9563
9564 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9567         lowered earlier.
9568
9569         * exceptions-x86.c: Merge some changes which seemed to have got lost
9570         in the linear-ir merge.
9571
9572         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9573
9574         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9575         long vreg volatile even if the variable was already created.
9576
9577         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9578         volatile variables.
9579
9580 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9581
9582         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9583
9584         * mini.c (mono_jit_compile_method_inner): Add support for 
9585         MONO_EXCEPTION_BAD_IMAGE.
9586
9587         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9588         mini_method_get_context () returns NULL. Fixes #356531.
9589
9590         * mini.c (mono_method_to_ir): Ditto.
9591         
9592         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9593         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9594
9595 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9596
9597         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9598         in the LDFTN implementation.
9599
9600 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9601
9602         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9603         code, patch calls to icalls, too, even if they're not in the
9604         shared generic code hash.  Fixes #411962.
9605
9606 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * cpu-x86.md: Increase the length of the fcall opcodes.
9609
9610         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9611         calls returning floats.
9612
9613         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9614         on NEWARR.
9615         
9616         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9617         missed earlier.
9618
9619         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9620         into the domain->method_code_hash.
9621
9622         * aot-compiler.c: Fix win32 build.
9623
9624         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9625         
9626         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9627         gshared NEWARR implementation.
9628
9629         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9630
9631         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9632         can be used outside of method_to_ir.
9633
9634         * mini.h (MonoCompile): Add arg_types field.
9635
9636         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9637         
9638         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9639         the values of the local arg_array and param_types array.
9640
9641 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9644         got accesses might only get generated later when NEWOBJ is decomposed.
9645         
9646         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9647         looking up the native code of the target method when a delegate is called
9648         for the first time.
9649
9650         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9651         optimization.
9652
9653         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9654
9655         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9656         AOT work on platforms without a working dlsym implementation.
9657
9658         * mini.h: Bump AOT image format version.
9659         
9660 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9661
9662         * mini-exceptions.c: Free a MonoType with
9663         mono_metadata_free_type() instead of g_free().
9664
9665         * aot-runtime.c: Free a MonoType.
9666
9667 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9670         optimization.
9671
9672         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9673         fp stack on x86.
9674
9675 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9676         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9677         profiler hook.
9678
9679 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9680
9681         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9682         NEWOBJ calls on valuetypes.
9683
9684         * iltests.il.in: Add new test.
9685
9686         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9687
9688 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9691         is no longer needed.
9692
9693         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9694         non register sized integer arguments.
9695         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9696         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9697         emit_memcpy2 ().
9698
9699         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9700         CEE_MONO_RETOBJ.
9701         
9702         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9703         two a binop with different sized arguments is emitted.
9704
9705         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9706         instruction in the ins==NULL case.
9707
9708 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9711
9712         * mini-x86.c: Fix osx build.
9713
9714         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9715         opcodes as well.
9716
9717         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9718         instruction for non int sized variables.
9719
9720         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9721         implementation.
9722
9723 2008-07-23  Robert Jordan  <robertj@gmx.net>
9724
9725         * method-to-ir.c: Fix MSVC build.
9726
9727 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9730         a non int sized type, widen it to an int since newer versions of gcc seem to
9731         generate code which needs this.
9732
9733         * ssa2.c abcremoval2.c: Fix warnings.
9734
9735         * *: Merge the Linear IR branch.
9736
9737         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9738         the ChangeLog file there describes all the changes done over the years. 
9739         Further documentation can be found at www.mono-project.com/Linear_IL.
9740
9741 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9742
9743         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9744           The float param registers and other param registers must be the 
9745           same index on Windows x64.
9746
9747         Contributed under MIT/X11 license.
9748
9749 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9750
9751         * mini.c: Make the previous fix GC safe.
9752
9753 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9754
9755         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9756
9757 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9758
9759         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9760           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9761           ArgValuetypeAddrInIReg instead.
9762
9763         Contributed under MIT/X11 license.
9764
9765 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9766
9767         * mini-codegen.c (get_register_spilling): Fix a warning.
9768
9769 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9770
9771         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9772         for types which the initialization fails. Raises the provided exception
9773         at the right stop after cleanup.
9774
9775 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9776
9777         * aot-compiler.c: Free most of the memory allocated during compilation.
9778
9779         * mini.c (mini_parse_debug_options): Fix a leak.
9780         
9781         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9782         during aot compilation.
9783
9784 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9787         it has too much register pressure.
9788
9789 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9792
9793 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9794
9795         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9796         on x86.
9797
9798         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9799         on amd64 similar to the way it is done on arm.
9800
9801         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9802
9803         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9804         consistency, normalize error messages, avoid loading aot-only modules in
9805         normal mode.
9806
9807         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9808         for consistency.
9809
9810         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9811
9812 2008-07-11  Martin Baulig  <martin@ximian.com>
9813
9814         * debug-debugger.h
9815         (MonoDebuggerInfo): Add `interruption_request'.
9816
9817 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * aot-compiler.c (emit_plt): Remove some dead code.
9820
9821         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9822
9823         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9824         return the plt info offset belonging to a given plt entry.
9825
9826         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9827         mono_aot_get_plt_info_offset.
9828         
9829         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9830         similar to the amd64 code by makeing jumps through a separate jump table 
9831         instead of embedding the jump addresses into the code.
9832
9833 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9836         method.
9837
9838 2008-07-10  Martin Baulig  <martin@ximian.com>
9839
9840         * mini.c (mini_method_compile): Disable generics sharing when
9841         running in the debugger.
9842
9843 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9844
9845         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9846
9847         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9848         the local register allocator from running out of registers on x86 when 
9849         using aot.
9850
9851 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9852
9853         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9854         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9855         C4146.
9856
9857         Contributed under MIT/X11 license.
9858
9859 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9862         speed up the assembler.
9863
9864 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9867         support.
9868
9869         * mini.c: Move the soft float handling macros a bit earlier, add 
9870         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9871         place.
9872
9873         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9874
9875         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9876         read-only to help catch code allocation requests.
9877         
9878         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9879         and turn it off when using --aot-only or when compiling with --aot=full.
9880
9881         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9882         jump table for switches from the normal domain mempool, not the code
9883         manager.
9884
9885         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9886         unbox trampoline which handles aot-only mode too.
9887
9888         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9889         an AOTed unbox trampoline.
9890
9891         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9892
9893 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9894
9895         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9896         ""
9897
9898         Contributed under MIT/X11 license.
9899
9900 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9901
9902         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9903           the unwind information for the method at the end of the allocated block.
9904           
9905         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9906           MonoCompileArch to hold the unwind info for SEH on Winx64
9907         
9908         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9909           frame pointer info for the method being compiled.
9910           
9911         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9912           the call to mono_exception_from_token.
9913           
9914         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9915           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9916           information is stored a the end of the method block because it is all 32-bit offset based.
9917
9918         Contributed under MIT/X11 license.
9919
9920 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9921
9922         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9923
9924         * wapihandles.c: Fix warnings.
9925
9926         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9927         mode.
9928
9929         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9930         mono_jit_compile_method in aot-only mode since that calls the type 
9931         initializer.
9932         
9933         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9934         get_delegate_invoke_impl in aot-only mode.
9935
9936         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9937
9938 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9941
9942         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9943         is on by default.
9944
9945         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9946
9947         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9948         init trampoline from the AOT file as well.
9949
9950         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9951         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9952         code.
9953
9954         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9955         mono_init.
9956
9957         * exceptions-amd64.c: Add _full variants for the remaining exception code
9958         creation functions as well, allow emission of relocatable code, remove
9959         caching since that is now done by the caller.
9960
9961         * mini-exceptions.c: Add _full variants for the remaining exception code
9962         creation functions as well, add aot-only support.
9963
9964         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9965         if we can determine a proper token for them.
9966         (add_wrappers): Add a few more wrappers.
9967         (emit_method_code): Remove some dead code.
9968         (emit_trampolines): Emit exception code too.
9969
9970         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9971
9972         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9973         mono_array_new_va which avoids varargs.
9974
9975         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9976
9977         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9978         mono_arch_create_specific_trampoline () in all places.
9979
9980         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9981         a bit so it can be used for other things as well.
9982         
9983         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9984         on demand as well.
9985
9986         * exceptions-amd64.c: Rename the caching from the exception code creation
9987         functions, it is done by the caller instead.
9988         
9989         * exceptions-amd64.c: Change the signature of the exception code creation 
9990         functions to allow the creation of relocatable code later.
9991
9992         * mini-exceptions.c: Add a set of functions to query the various 
9993         runtime-generated exception functions.
9994
9995         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9996         mono_arch_.. () functions.
9997         
9998 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9999
10000         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10001
10002         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10003
10004         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10005         (mini_get_vtable_trampoline): Ditto.
10006
10007         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10008         code in the AOT case by returning the code size and a list of relocations to
10009         the caller.
10010
10011         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10012
10013 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10014
10015         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10016           clean the stack.
10017
10018         Contributed under MIT/X11 license.
10019
10020 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10023         so the buffer size can be computed correctly. Fixes #404735.
10024
10025         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10026         normally as cfg->debug_info is already freed.
10027
10028 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * mini-amd64.c: For calls returning vtypes in registers, don't store
10031         the return address on the stack, instead allocate a separate local for
10032         it. Fixes #404729.
10033
10034 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10035
10036         * mini-trampolines.c, mini.h: Add an argument to
10037         mono_create_jit_trampoline_in_domain() for turning off the adding
10038         of the sync wrapper.
10039
10040         * mini.c: Use the JIT trampoline without sync instead of
10041         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10042         be patched.
10043
10044 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10045
10046         * driver.c: Turn on GSHARED optimization by default.
10047
10048 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10049
10050         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10051         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10052
10053         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10054         create a variant of the generic trampoline code callable from AOTed trampolines.
10055
10056         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10057         trampoline code callable from AOTed trampolines.
10058
10059         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10060
10061 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10062
10063         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10064         pass-through manner.
10065
10066         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10067         and don't fail sharing for them anymore.
10068
10069         * mini-exceptions.c: Handle exceptions in shared generic methods.
10070
10071         * generic-sharing.c: When checking the context of a generic
10072         method, also check its class's context.  Don't treat wrappers as
10073         sharable.
10074
10075         * mini-trampolines.c: Some code factored out to
10076         metadata/generic-sharing.c.  Handle the MRGCTX case.
10077
10078         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10079         we must deal with the method being of another instantiation of the
10080         class.  Add static rgctx invoke wrappers to generic methods.
10081
10082 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10083
10084         * mini.c: Provide all jit infos of generic shared methods with a
10085         generic jit info.
10086
10087         * mini-exceptions.c: Handle the new situation that a generic info
10088         might be available, but not info about the this/vtable/mrgctx
10089         variable.
10090
10091 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10092
10093         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10094         generic methods.
10095
10096 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10097
10098         * dominators.c (check_dominance_frontier): Fix a warning.
10099
10100         * mini.h: Add some missing prototypes.
10101
10102         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10103
10104         * driver.c (mono_jit_init_version): Correct the comments since the first
10105         argument should be the name of the root domain, not a filename.
10106
10107         * aot-runtime.c (make_writable): Error out if this is called while running
10108         with --aot-only.
10109         (load_aot_module): Ditto.
10110
10111         * aot-compiler.c: Really fix the computation of method indexes.
10112
10113         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10114         optimizations as this is no longer called frequently.
10115
10116         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10117         method and the invoke impl code and pass it to the delegate trampoline instead of
10118         just the delegate class.
10119
10120 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10121
10122         * aot-compiler.c: Fixup the computation of method indexes.
10123         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10124         the method builder infrastructure.
10125
10126         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10127         has no header.
10128
10129         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10130         mode, load the method right away instead of creating a trampoline.
10131
10132         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10133
10134         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10135         some checks a bit.
10136
10137 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10138
10139         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10140         (mono_aot_load_method): Use method_index instead of method->token.
10141
10142         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10143         can handle icalls etc. properly.
10144
10145         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10146
10147         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10148
10149         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10150         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10151         JIT_ICALL_ADDR patch type.
10152
10153         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10154
10155         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10156         request flag.
10157         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10158
10159         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10160
10161 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10162
10163         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10164         domain->jit_code_hash.
10165
10166 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10169
10170 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10171
10172         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10173         get_this_arg_from_call, let it compute it when needed.
10174
10175         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10176         gsctx from code only when needed.
10177
10178         * mini-trampolines.c (get_generic_context): Rename this to 
10179         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10180         it can be called by the arch backends.
10181
10182         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10183
10184 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10185
10186         * driver.c (mono_main): Add experimental --aot-only command line option.
10187
10188         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10189         set.
10190
10191 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10192
10193         * driver.c (DllMain): Remove mono_module_handle.
10194
10195         Contributed under MIT/X11 license.
10196
10197 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10200         for emitting methods which are not in the source assembly. Detect and report
10201         failure of assembling+linking.
10202         
10203         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10204
10205         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10206
10207 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10208
10209         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10210
10211 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * mini.h: Remove some obsolete prototypes.
10214
10215         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10216
10217 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10218
10219         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10220         supported by Visual Studio, so use alloca().
10221
10222 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10225         Fixes #402585.
10226
10227 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10228
10229         * mini.c: Fail sharing of a generic method if it contains an open
10230         catch clause (because we don't pass MRGCTXs yet).
10231
10232 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10233
10234         * mini.c: When compiling a method with generic sharing, insert the
10235         method instantiated with an all-Object generic context into the
10236         jit info table, instead of the context of the first instantiation
10237         of the method we happen to compile.
10238
10239 2008-06-18  Martin Baulig  <martin@ximian.com>
10240
10241         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10242         `major_version' and `minor_version'.
10243
10244 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10245
10246         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10247         mono_method_is_generic_sharable_impl() takes an additional
10248         argument specifying whether to treat type variables as reference
10249         types.
10250
10251 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10252
10253         * mini.h: Removed obsolete prototypes.
10254
10255 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10256
10257         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10258         already handle them.
10259
10260 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10261
10262         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10263         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10264         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10265         tramp-x86.c: Added a MonoGenericContext* argument to
10266         mono_arch_get_unbox_trampoline() so that it can call other
10267         functions which require it.
10268
10269 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10270
10271         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10272         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10273         mono_arch_get_this_arg_from_call() takes a
10274         MonoGenericSharingContext* as well.
10275
10276 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10277
10278         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10279         implement generic sharing of unbox.
10280
10281 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10282
10283         * mini.c: Don't compute the vtable to determine whether a field is
10284         special static, because it might not work for open types.
10285
10286 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10287
10288         * mini.c: Removed the unused token_type and token_source arguments
10289         from get_runtime_generic_context_ptr().
10290
10291 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10292
10293         * mini.c (ADD_BINOP): fix the build
10294
10295 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10298         a widening op.
10299
10300 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10301
10302         * mini.h: Removed class relations enum that's not used anymore.
10303
10304 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10305
10306         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10307
10308         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10309         the lazy fetch trampoline access code.
10310
10311 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10314
10315 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10318
10319         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10320
10321         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10322
10323 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10324
10325         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10326         intrinsics.
10327
10328         * mini-ops.h: Add MIN/MAX_UN opcodes.
10329
10330         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10331         intrinsics.
10332
10333         * basic-math.cs: Add more min/max tests.
10334
10335         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10336
10337 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10338
10339         * mini.c: Small fix in the prologue of emit_castclass.
10340
10341 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10344
10345         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10346         do not work even for unsigned types. Fixes #400014.
10347
10348         * basic-math.cs: Add regression tests for unsigned Min/Max.
10349
10350 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10351
10352         * mini.c: Added additional context_used argument to several
10353         functions, which will be needed for sharing generic methods.  Use
10354         GET_RGCTX macro wherever appropriate.  Declare only one
10355         context_used in mono_method_to_ir().
10356
10357 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10358
10359         * mini.c, generic-sharing.c: Removed generic class relations.
10360
10361         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10362         functions due to MRGCTX changes.
10363
10364 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10365
10366         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10367         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10368         with calculated IMT.
10369
10370         * mini.c: Generic sharing of calls via generic interfaces.
10371
10372         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10373         generic method with non-constant MonoGenericContext*.  Instead,
10374         the context is taken out of the method itself.
10375
10376 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10377
10378         * mini.c: Generic sharing of ldvirtftn.
10379
10380 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10381
10382         * mini.c: Generic sharing of ldftn.
10383
10384 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10385
10386         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10387
10388 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10389
10390         * mini.c: Generic sharing of the special case of ldtoken followed
10391         by a call to GetTypeFromHandle.
10392
10393 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10394
10395         * mini.c: Generic sharing of box for nullable types.
10396
10397 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10400         are passed on the stack. Fixes #324807.
10401
10402 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10403
10404         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10405         for the ArgValuetypeAddrInIReg case.
10406
10407         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10408         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10409
10410         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10411         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10412         local variable and pass the local variable by reference to the called method.
10413           
10414         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10415         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10416
10417         Contributed under MIT/X11 license.
10418
10419 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10420
10421         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10422
10423         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10424         everything.
10425
10426 2008-06-10  Martin Baulig  <martin@ximian.com>
10427
10428         * debug-mini.c
10429         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10430
10431 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10432
10433         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10434         possible error when no arguments are passed.
10435
10436         Contributed under MIT/X11 license.
10437
10438 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10439
10440         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10441         where the file name is NULL.
10442
10443 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * mini.c: Fix s390 build.
10446
10447 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10448
10449         * trace.c (mono_trace_parse_options): Fix warnings.
10450
10451         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10452
10453 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * mini.c (remove_block_if_useless): Avoid printing the method name.
10456         
10457         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10458         MONO_INST_NEW.
10459
10460         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10461         LMF. Not yet used.
10462
10463         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10464         translated code after it has been patched.
10465
10466 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10469         avoid problems during code patching on SMP systems.
10470         (emit_call): Avoid adding a patch info which is already added by 
10471         emit_call_body.
10472         (mono_arch_emit_exceptions): Ditto.
10473
10474 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10475
10476         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10477         MONO_TYPE_ISSTRUCT already checks for it.
10478
10479 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10480
10481         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10482           structs with floats on Winx64 the float registers are not used.  
10483           The integer registers are always used..
10484         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10485           only one register will be used and only if the size of the struct 
10486           is 1,2,4, or 8 bytes.
10487
10488         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10489           to work for Winx64.
10490
10491         Contributed under MIT/X11 license.
10492
10493 2008-06-05  Martin Baulig  <martin@ximian.com>
10494
10495         * debug-debugger.c (debugger_lookup_class): Also call
10496         mono_class_setup_methods() here; we're only called from RTI.
10497
10498 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10499
10500         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10501         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10502         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10503         Post-process object files and add dtrace-generated object, if necessary.
10504
10505         Contributed under MIT/X11 license.
10506
10507 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10508
10509         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10510         element class.
10511
10512         * mini.c: Generic sharing for unbox.any and castclass.
10513
10514 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10515
10516         * mini.c: Ignore tailcall prefix in shared generic code and when
10517         doing calls which require a vtable/rgctx argument.
10518
10519 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10520
10521         * mini.c: Don't free the JIT info.
10522
10523         * driver.c: Changes in the JIT info table testing code.
10524
10525 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10528         interruption. Fix some warnings.
10529
10530         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10531         interruption_checkpoint.
10532
10533 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10534
10535         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10536         from embedding applications.
10537
10538 2008-06-02  William Holmes  <billholmes54@gmail.com>
10539
10540         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10541           reserving 32 bytes on the stack when making calls. 
10542
10543         Contributed under MIT/X11 license.
10544
10545 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10546
10547         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10548         the linear IL branch.
10549
10550         * driver.c: Print out more information for --version on arm.
10551
10552 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10555         bb_exit instead, since out of line bblocks might not actually be emitted
10556         out-of-line.
10557         
10558         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10559         maximum epilog size for out of line bblocks if tracing is enabled.
10560
10561         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10562
10563 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10564
10565         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10566
10567 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10570         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10571         opcodes.
10572
10573 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10574
10575         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10576         the 'value' to store is a constant.
10577
10578         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10579
10580         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10581         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10582
10583 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10586         for accessing method->generic_container.
10587
10588 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10591         
10592         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10593
10594         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10595
10596         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10597         fails.
10598
10599 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10602
10603         * mini.c: Handle the case when mono_class_vtable () fails.
10604
10605 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10606         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10607         the stat profiler.
10608
10609 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10610
10611         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10612         together with domain sharing.
10613
10614 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10615
10616         * mini.c: Treat callvirts to final methods like non-virtual calls
10617         when doing generic sharing, i.e. look them up in the runtime
10618         generic context.
10619
10620 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10621
10622         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10623         with computed types (for generic sharing).
10624
10625         * mini.c: Generic sharing for mkrefany and refanyval.
10626
10627 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10630         possible.
10631
10632         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10633         the generic sharing code.
10634         
10635         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10636         when needed.
10637
10638 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10641
10642 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10643
10644         * driver.c: updated copyright date
10645
10646 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10649         needed.
10650
10651 2008-05-19  Martin Baulig  <martin@ximian.com>
10652
10653         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10654         pointing to the new `_mono_debug_using_mono_debugger' variable.
10655
10656         * driver.c
10657         (mono_main): Check mono_debug_using_mono_debugger() rather than
10658         the `MONO_INSIDE_MDB' environment variable to check whether we're
10659         inside the debugger.
10660
10661 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10662
10663         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10664         argument.
10665
10666 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10667
10668         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10669
10670         * mini.c: Added mini_assembly_can_skip_verification. This
10671         function checks if the assembly requested to skip verification. 
10672         Fixes part of #387274.
10673
10674 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * mini.c (mini_get_method): Disable the check for open generic classes when
10677         using generic sharing.
10678
10679         * generics.cs: Add a test for #387034.
10680
10681         * mini.c (mini_get_method): Check whenever the method class is an open generic
10682         type, and return NULL in that case, causing a verification error. Fixes
10683         #384123.
10684
10685 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10686
10687         * driver.c (mono_main): Revert r102623. The right
10688         thing to do is to enable the verifier under verifiable
10689         unless a --security flag was passed.
10690
10691         We need this non-trivial behavior for --verify-all otherwise
10692         mcs-compileall won't be able to use it. As it needs everything to
10693         be verified under validil.
10694
10695 2008-05-06  Martin Baulig  <martin@ximian.com>
10696
10697         Fix #383749.
10698
10699         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10700         (mono_debugger_thread_cleanup): Likewise.
10701         (mono_debugger_extended_notification): Likewise.
10702
10703 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10704
10705         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10706         against both inflated and non-inflated methods. We need to check against the
10707         generic definition for cases where the instantiated method is not visible.
10708         We need to check against the inflated types for cases where the instantiation
10709         changes any super type. This fixes #382986.
10710
10711         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10712         that check for visibiliy as generic params only appears as the type subject
10713         of tokens on call opcodes. Field manipulation and ldftn must always
10714         target an exact type.
10715
10716 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10717
10718         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10719         if no related --security flag is passed.
10720
10721 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10722
10723         * mini-arch.h: Prepare support for ppc64.
10724
10725         Contributed under MIT/X11 license.
10726
10727 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10728
10729         * aot-runtime.c: Prepare support for ppc64.
10730
10731         Contributed under MIT/X11 license.
10732
10733 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10734
10735         * mini-ops.h: Prepare support for ppc64.
10736
10737         Contributed under MIT/X11 license.
10738
10739 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10740
10741         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10742
10743         Contributed under MIT/X11 license.
10744
10745 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10748         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10749         assemblies on windows.
10750
10751 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10752
10753         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10754         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10755         * main.c: Use UTF-8 encoded command line instead of Windows default code
10756         page on Windows to support Unicode.
10757         * driver.c (DllMain): New function for mixed-mode assembly support.
10758         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10759         export __stdcall functions without decoration.
10760
10761         Contributed under MIT/X11 license.
10762
10763 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10764
10765         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10766         saving it very early.
10767
10768 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10769
10770         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10771         deleted.  The only way to access the new RGCTX is via the
10772         trampline.
10773
10774         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10775         vtable instead of the RGCTX to static methods.
10776
10777         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10778         accessing the new RGCTX.
10779
10780         * generic-sharing.c: There is no separation between self, type
10781         arguments and other types in the RGCTX anymore.
10782
10783 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10784
10785         * mini-amd64.c (add_general): Remove previous stack adjustment.
10786         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10787         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10788         for 32 bytes of stack space reserved for all calls.
10789         
10790         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10791         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10792         adjustment.
10793         
10794         Code contributed under MIT/X11 license.
10795
10796 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10797
10798         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10799         against the root definition, peeling out method and type instantiations.
10800         Cache verify success results, code that fails verification is still
10801         checked multiple times.
10802
10803 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10806
10807 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10808
10809         * mini-amd64.c (add_general): Always increment stack on Win64.
10810         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10811         on Win64.
10812         
10813         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10814         stack based argument handling on Win64.
10815         
10816         Code contributed under MIT/X11 license.
10817
10818 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10819
10820         * Makefile.am (version.h): Add support for git-svn.
10821
10822 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10825         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10826         avoiding allocations and libc functions which might deadlock.
10827         
10828         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10829         'no-gdb-backtrace' option is set.
10830
10831         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10832
10833         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10834
10835 2008-04-21  Martin Baulig  <martin@ximian.com>
10836
10837         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10838         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10839
10840 2008-04-21  Martin Baulig  <martin@ximian.com>
10841
10842         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10843         `thread_vtable', `event_handler_ptr' and `event_handler'.
10844
10845 2008-04-21  Martin Baulig  <martin@ximian.com>
10846
10847         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10848         allows delayed initialization of the `executable_code_buffer' when
10849         attaching.
10850
10851 2008-04-21  Martin Baulig  <martin@ximian.com>
10852
10853         * mini.h (mono_debugger_create_notification_function): Removed.
10854         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10855
10856         * mdb-debug-info64.s
10857         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10858
10859         * mdb-debug-info32.s
10860         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10861
10862         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10863         currently only works on x86 and x86_64, so don't create it on ppc.
10864
10865 2008-04-21  Martin Baulig  <martin@ximian.com>
10866
10867         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10868
10869         * mini.c
10870         (mini_method_compile): In the fp elimination check, check
10871         `debug_options.mdb_optimizations' in addition to
10872         mono_debug_using_mono_debugger().       
10873
10874         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10875         disable some JIT optimizations which are only disabled when
10876         running inside the debugger.
10877         Added `--help-debug' option to describe the debugging options.
10878         (parse_debug_options): New static function to parse the `--debug'
10879         options, so we can easily add more stuff in future.
10880
10881 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10884         the method has no body.
10885
10886 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10887
10888         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10889         assembly is not allowed in MSVC 64-bit compiler. 
10890         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10891         as we get floating point exceptions everywhere.
10892         
10893         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10894         correctly align arguments for call to throw_exception.
10895         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10896         
10897         Code contributed under MIT/X11 license.
10898
10899 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10900
10901         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10902
10903 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10906
10907         * mini-amd64.c (NEW_INS): Set cil_code.
10908
10909         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10910         from mini-amd64.c so all debugger related logic is in one place.
10911
10912         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10913         later won't have a random ip assigned to them.
10914
10915 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10918         the arch specific function initializes code_size.
10919         (mono_create_delegate_trampoline): Ditto.
10920
10921         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10922         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10923         platforms.
10924
10925         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10926         running under the debugger.
10927
10928         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10929         debugger.
10930
10931         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10932         debugger. Also move the disabling of optimizations here from driver.c.
10933         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10934         debugger.
10935
10936         * mini.h (MonoCompile): Add a few new flags.
10937
10938 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10941         so the cil_code field of created MonoInst's is properly set.
10942         (mini_select_instructions): Ditto.
10943
10944         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10945         (MONO_INST_NEW_CALL): Ditto.
10946
10947         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10948         in many places so the ins->cil_code field is properly initialized.
10949
10950         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10951         place.
10952
10953 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * mini.c (mini_method_compile): Print a different message when compiling a 
10956         shared method.
10957         
10958         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10959         > 1.
10960
10961 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10964         SSE2 instructions.
10965
10966         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10967         
10968 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * mini.c (handle_stack_args): Make this return void since its return value was
10971         never used. Also set cfg->unverifiable for invalid IL instead of calling
10972         G_BREAKPOINT ().
10973
10974 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10975
10976         * mini.c: Make sure "this" is live in catch clauses with type
10977         variables in shared generic code.
10978
10979 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10980
10981         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10982         generic_class_is_reference_type() to ensure the proper behaviour
10983         when sharing generic code and the type in question is a type
10984         argument.
10985
10986 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10989         race conditions when printing thread dumps. Fixes #377738.
10990
10991 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10992         
10993         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10994         shows up when both MonoInst arguments can cause aliasig.
10995         There is likely no way in the current JIT to trigger this problem, but
10996         it showed up in the development of generics sharing, when in a new
10997         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10998         When the generics sharing code will be committed, its tests will be
10999         valid also for this bug.
11000
11001 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11002
11003         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11004         PATCH_INFO_METHOD.
11005
11006         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11007         NULL.
11008
11009 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11012         use a more detailed exception message for InvalidCastException.
11013
11014         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11015
11016         * driver.c (mono_main): Add --debug=casts option to turn on better 
11017         InvalidCastException message details.
11018
11019         * mini.c (mini_get_debug_options): New helper function to return the address of
11020         the debug_options variable.
11021
11022         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11023         the jit_tls TLS variable.
11024
11025         * mini.c (mono_jit_tls): New TLS variable.
11026
11027         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11028         option is used.
11029
11030 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11031
11032         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11033
11034         * mini.c: Removed verifer related stuff, code moved to verify.c.
11035
11036         * driver.c: Using code from verify.c instead of mini.c.
11037
11038 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11041         longer valid.
11042
11043 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11044
11045         * mini.c (check_for_method_verify): Enabling verification of
11046         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11047         have been fixed.
11048
11049 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11050
11051         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11052         caller saved registers as well.
11053         
11054         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11055         saved registers as well.
11056
11057 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11060
11061         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11062         code.
11063
11064 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11067         to get_call_info.
11068         (get_call_info): Take a gsctx argument instead of 'cfg'.
11069
11070 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11073         mono_verify_all is set.
11074
11075         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11076
11077         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11078
11079 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11082         an exception.
11083
11084         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11085         verifier and the code generated by the compiler.
11086
11087 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11088
11089         * mini.c: Generic sharing of the non-nullable case of the box
11090         instruction.
11091
11092 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * inssel.brg: Fix the build.
11095
11096         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11097
11098 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11099
11100         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11101         Array:Address. Fixes #372410.
11102
11103         * iltests.il.in: New tests for readonly prefix.
11104
11105 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11106
11107         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11108         mini-trampolines.c.
11109
11110         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11111         mini-exceptions.c.
11112
11113         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11114         
11115         * mini.c (mono_decompose_op_imm): New helper function.
11116
11117         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11118         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11119         return value.
11120
11121         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11122         mono_arch_output_basic_block. Fix warnings.
11123
11124         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11125         for now.
11126
11127 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11128
11129         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11130         since the extra frame is now detected automatically inside the loop.
11131
11132         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11133         opts which are now in mono_peephole_ins ().
11134         
11135         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11136
11137         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11138         frames and skip duplicate managed-to-native frames. Fixes #367665.
11139
11140         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11141         opts which are now in mono_peephole_ins ().
11142         (mono_arch_peephole_pass_2): Ditto.
11143
11144         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11145
11146         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11147         arch independent peephole optimizations.
11148
11149         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11150         opts which are now in mono_peephole_ins ().
11151
11152         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11153         
11154         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11155
11156         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11157         pattern.
11158
11159         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11160         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11161         opcode. 
11162
11163 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11166         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11167         return value.
11168
11169         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11170         mono_arch_output_basic_block. Fix warnings.
11171
11172 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11175         conv.ovf.u.un.
11176
11177 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11178
11179         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11180         conv.ovf.u.un.
11181
11182         * iltests.il: Add new tests.
11183
11184 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11185
11186         * mini.c: Removed Windows version macros.
11187
11188 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11189
11190         * generic-sharing.c: Put reflection types in the extensible part
11191         of the runtime generic context.
11192
11193         * mini.c: Generic sharing of the GetTypeHandle special case of the
11194         ldtoken instruction.
11195
11196 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11197
11198         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11199
11200         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11201         
11202         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11203         consistency with the other version on the linear IR branch.
11204
11205         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11206
11207         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11208
11209         * iltests.il.in: Add new tests.
11210
11211 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11214
11215         * iltests.il.in: Add new tests.
11216
11217 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11218
11219         * mini.c: Two variables with the same name were declared in
11220         nesting contexts and one wasn't initialized.  Fixed.
11221
11222 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11223
11224         * mini.c: Generic sharing of the initobj instruction.
11225
11226 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11227
11228         * mini.c: make the test to optimize ldtoken from typeof() more
11229         precise.
11230
11231 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11232
11233         * mini.c: Generic sharing of the initobj instruction for reference
11234         types.
11235
11236 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11237
11238         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11239         the mono_breakpoint_clean_code() code to perform bound checks.
11240
11241 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11242
11243         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11244         mono_arch_patch_callsite() to include the start of the managed method
11245         to be able to perform bound checks.
11246
11247 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11248
11249         * mini.c: Generic sharing for the isinst instruction.
11250
11251 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11252
11253         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11254         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11255         with the runtime generic context argument.
11256
11257         * mini.c: Share calls to several types of unsharable methods by
11258         putting the address of the method code in the runtime generic
11259         context and doing an indirect call.
11260
11261         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11262         to switches.
11263
11264 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11265
11266         * generic-sharing.c: Change due to a change in the runtime genric
11267         context API.
11268
11269 2008-03-15  Martin Baulig  <martin@ximian.com>
11270
11271         * tramp-x86.c
11272         (mono_arch_nullify_class_init_trampoline): Add call to
11273         mono_breakpoint_clean_code() to make things work when running
11274         inside the debugger.
11275
11276         * tramp-amd64.c
11277         (mono_arch_nullify_class_init_trampoline): Add call to
11278         mono_breakpoint_clean_code() to make things work when running
11279         inside the debugger.
11280
11281 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * inssel-long.brg (reg): Fix 64 bit build.
11284
11285 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11286
11287         * mini.c, mini.h: Share static generic code by passing it an
11288         implicit argument pointing to the runtime generic context.
11289
11290         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11291         inssel-long32-mips.brg: New opcodes for calling shared static,
11292         which need to be passed the runtime generic context.
11293
11294         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11295         argument on the stack in the prologue if needed.  New function for
11296         finding the runtime generic context argument from the registers
11297         saved by the trampoline.
11298
11299         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11300         runtime generic context argument.
11301
11302         * tramp-amd64.c: Also restore the register used for the runtime
11303         generic context argument.
11304
11305         * mini-trampoline.c: Resolve shared static calls by consulting the
11306         runtime generic context via the new argument.
11307
11308         * generic-sharing.c: Add an argument to sharability-checking
11309         functions that specifies whether type variables should be treated
11310         as sharable type arguments.
11311
11312         * inssel-x86.brg: Removed a superfluous, buggy rule.
11313
11314         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11315         to switches.
11316
11317 2008-03-14  Martin Baulig  <martin@ximian.com>
11318
11319         * debug-debugger.c (main_thread_handler): Call
11320         mono_runtime_run_main() without sending any notifications.
11321
11322         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11323
11324 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11327
11328 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11329
11330         * tramp-x86.c: Fixed register restore offsets in the trampoline
11331         code for ECX and EDX.
11332
11333 2008-03-12  Geoff Norton  <gnorton@novell.com>
11334
11335         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11336         different ucontext_t implementations.
11337         * exceptions-arm.c: Use the above defines to get exceptions working on 
11338         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11339         * mini-arm.c: Implement iPhone icache support (based on a patch by
11340         Luke Howard lukeh@padl.com)
11341
11342 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11343
11344         * mini.c: Enable generic sharing of calls to non-static
11345         non-interface non-generic non-value-type methods.
11346
11347         * mini-trampolines.c: Resolve calls from shared generic code.
11348
11349 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11350
11351         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11352
11353         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11354
11355 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11356
11357         * mini.c: some fixes for the AOT compiler.
11358
11359 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11360
11361         * cpu-amd64.md: Add clob:1 to some float opcodes.
11362
11363 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11364
11365         * mini.h: Added MiniVerifierMode enumeration.
11366
11367         * mini.c: Added mini_verifier_set_mode to control
11368         the usage of the new verifier.
11369
11370         * mini.c (mono_method): Integrated the new verifier.
11371
11372         * driver.c: Extended --security option with validil and
11373         verifiable options to activate the new verifier.
11374
11375 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11376
11377         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11378         optimization to ctors taking 0 or 2 arguments too.
11379
11380         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11381         a bit.
11382
11383         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11384
11385         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11386
11387 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11390         non-aot case as well.
11391
11392         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11393
11394         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11395         changes.
11396
11397         * aot-compiler.c (encode_patch): Ditto.
11398
11399         * mini.h (G_MININT32): Fix the definition of this.
11400
11401 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11404
11405         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11406
11407 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11408
11409         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11410         methods returning vtypes in registers.
11411         (mono_arch_allocate_vars): Ditto.
11412
11413         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11414
11415         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11416
11417         * generics.cs: Add a test from the linear IR branch.
11418
11419         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11420
11421         * mini.c (inline_method): Cache failed inline attempts.
11422
11423 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11424
11425         * mini.c: For shared methods of generic classes put the location
11426         of "this" into the MonoGenericJitInfo.
11427
11428         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11429         register out of a MonoContext by register number.  Add the generic
11430         sharing context as an argument to mono_arch_find_this_argument().
11431
11432         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11433         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11434         for new arch function.
11435
11436         * mini-exception.c: Handle open exception clauses in shared
11437         generic code.
11438
11439         * mini-trampolines.c: Supply additional argument to
11440         mono_arch_find_this_argument().
11441
11442 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * Makefile.am (regtests): Run the bench.exe tests last.
11445
11446 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11449         a bit.
11450
11451 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11452
11453         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11454         with MS.
11455
11456         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11457         
11458         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11459
11460         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11461         whose class has no cctor.
11462
11463         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11464
11465 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11466
11467         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11468         unverified.
11469
11470 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11473         to be in sync with the code on the linear IR branch.
11474
11475         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11476
11477         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11478
11479 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11482
11483         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11484
11485         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11486
11487         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11488
11489         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11490         
11491         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11492         body.
11493
11494 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11495
11496         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11497         OP_LOADR4_MEMBASE emission.
11498
11499         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11500         (mono_spillvar_offset_float): Ditto.
11501
11502         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11503
11504         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11505         emission.
11506
11507         * basic-long.cs: Add regression tests for them.
11508
11509         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11510         use.
11511         (mono_arch_allocate_vars): Fix representation of single-precision float
11512         argument.
11513         (mono_arch_output_basic_block): Ditto.
11514
11515         * inssel-mips.brg: Ditto, remove duplicate items.
11516
11517         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11518         arguments of tail calls as on other platforms.
11519         (mono_arch_output_basic_block): Handle tail calls.
11520
11521         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11522         register.
11523
11524         * objects.cs (test_5_pass_static_struct): Add test for it.
11525
11526         Contributed under MIT/X11 license.
11527
11528 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * Makefile.am: Use gmcs for compiling the regression tests.
11531
11532         * *.2.cs *.2.il: Rename to *.cs and *.il.
11533
11534 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11535
11536         * regalloc.h: Make the vassign array smaller.
11537
11538         * mini.c (mini_method_compile): Remove an unused field in cfg.
11539
11540         * mini-codegen.c: Add a bunch of micro optimizations.
11541
11542 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * regalloc.h: Remove some unused fields.
11545
11546 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11547
11548         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11549
11550         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11551
11552 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11553
11554         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11555
11556         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11557         trampoline: Fetch an entry from the runtime generic context.  If
11558         it's NULL, jump to the actual trampoline to fill the runtime
11559         generic context.  Otherwise, return it.
11560
11561         * mini.c: Call the lazy fetch trampoline to get entries out of the
11562         runtime generic context.
11563
11564         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11565         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11566         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11567
11568 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11569
11570         * mini.c: Fetch data out of the extensible part of the runtime
11571         generic context instead of calling a helper function.
11572
11573         * generic-sharing.c: Some functions moved into
11574         metadata/generic-sharing.c.  Helper function for fetching other
11575         types now checks and asserts against extensible rgctx (just for
11576         debugging purposes - the helper function isn't called anymore
11577         unless for debugging).
11578
11579 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11580
11581         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11582         for tail calls up to the point that the tests in iltests.exe run. Also add a
11583         dummy CKFINITE implementation.
11584         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11585         needed for trampoline LMF frames.
11586
11587         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11588         trampoline LMF frames.
11589
11590 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11591
11592         * mini.c (inline_method): clean any pending loader error when inlining fail.
11593         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11594
11595 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11596
11597         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11598
11599         * aot-runtime.c (decode_patch_info): Ditto.
11600
11601         * mini.c (mono_resolve_patch_target): Ditto.
11602         
11603         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11604         icall wrappers.
11605
11606         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11607         
11608         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11609         if it references an icall address.
11610
11611 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * cpu-s390x.md: Remove some more unused opcodes.
11614         
11615         * cpu-s390x.md: Remove some unused opcodes.
11616
11617         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11618         mono_op_imm_to_op ().
11619
11620         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11621         instead of a switch statement.
11622         
11623         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11624         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11625
11626         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11627         
11628         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11629
11630         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11631         -1.
11632
11633 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11634
11635         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11636         opened. Fixes #362607.
11637
11638         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11639
11640         * iltests.il.in: Add a test for static methods in interfaces.
11641
11642 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11643
11644         * genmdesc.c (build_table): Fix a crash on older glib versions.
11645
11646         * cpu-sparc.md: Remove some unused opcodes.
11647         
11648         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11649         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11650
11651         * cpu-amd64.md: Remove some unused opcodes.
11652
11653         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11654         like the other opcodes.
11655
11656 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11657
11658         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11659
11660         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11661
11662         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11663         variables 'cfg' instead of 'm' for consistency.
11664
11665         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11666
11667         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11668         argument holding the vtype return address, to avoid the ambigious use of
11669         cfg->ret for this purpose.
11670
11671         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11672
11673         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11674         
11675         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11676         new mono_print_ins () function which only takes one argument.
11677
11678 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11679
11680         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11681         macro arguments.
11682
11683 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11686
11687         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11688
11689         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11690         opcodes and other small changes.
11691
11692         * mini-ops.h: Add some new opcodes from the linear IR branch.
11693
11694         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11695
11696         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11697         opcodes, use the REG_MEMBASE opcodes instead.
11698         
11699         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11700         opcodes, use the REG_MEMBASE opcodes instead.
11701         
11702         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11703         linear IR branch.
11704
11705         * mini.c (mono_op_imm_to_op): New helper function.
11706
11707         * mini-ops.h: Add some opcodes from linear IR branch.
11708
11709 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11712         <tsv@solvo.ru>.
11713
11714 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11715
11716         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11717         OP_ICONV_TO_R4/R8.
11718
11719         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11720
11721 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * aot-compiler.c (emit_method_code): Add an assert.
11724
11725         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11726         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11727         methods.
11728
11729 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11732         some load/store opcodes so they are consistent. 
11733         (mono_arch_emit_prolog): Simplify some code.
11734
11735         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11736
11737         * objects.cs: Add tests for large argument offsets on ARM.
11738
11739         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11740         stack offsets. Fixes #359651.
11741
11742         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11743
11744         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11745
11746         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11747
11748         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11749
11750         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11751
11752         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11753         rid of CEE_CONV_R_UN.
11754
11755         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11756
11757 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11760
11761         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11762
11763         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11764
11765         * cpu-amd64.md: Remove some unused opcodes.
11766
11767         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11768
11769         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11770
11771         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11772         arch specific functions for its parts. Call the peephole pass after local
11773         regalloc so the prolog can compute a more accurate max_offset.
11774         
11775         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11776         the corresponding OP_I/OP_L opcodes.
11777
11778         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11779
11780         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11781
11782 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11783
11784         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11785         as they are handled in mini.c.
11786
11787         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11788         
11789         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11790         case since it is handled in mini.c.
11791
11792         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11793
11794         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11795
11796         * *.c: Use the new opcodes in the IR and back end code.
11797
11798         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11799
11800         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11801
11802 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11803
11804         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11805         an assert because it has a race condition.
11806
11807 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11810
11811         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11812
11813         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11814
11815         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11816         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11817
11818 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11819
11820         * cpu-amd64.md (move): Correct the maximum size of move.
11821
11822 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11823
11824         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11825         the generic class init trampoline to return quickly if the class
11826         is already inited.
11827
11828 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11829
11830         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11831         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11832
11833 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11834
11835         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11836         branch.
11837
11838 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * objects.cs: Add some soft-float tests.
11841
11842         * mini.c: Fix a couple more soft-float issues.
11843
11844         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11845
11846         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11847         avoid a REX prefix.
11848
11849 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11850
11851         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11852         exception happens while compiling a virtual method.
11853
11854 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11857         
11858         * mini-sparc.c: Fix build.
11859
11860         * mini-sparc.c (get_call_info): Add support for generic sharing.
11861
11862         * mini-exceptions.c: Add a FIXME.
11863
11864 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11867         altstack handling code.
11868
11869         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11870         
11871         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11872
11873         * mini-s390.c: Add support for generic sharing.
11874
11875         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11876         Fix CAS on s390.
11877         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11878
11879         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11880
11881         * mini-s390x.c: Add support for generic sharing.
11882         
11883         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11884         Fix CAS on ia64.
11885         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11886
11887         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11888         can be used since it takes a 16 bit signed immediate.
11889
11890         * inssel-s390x.brg: Fix OP_SETRET.
11891
11892         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11893
11894         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11895
11896         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11897
11898         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11899
11900         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11901         in one place.
11902
11903         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11904         stuff.
11905
11906         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11907         of the unused mono_arch_patch_delegate_trampoline stuff.
11908
11909 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11910
11911         * basic-long.cs: Move the fp related tests to basic-float.cs.
11912
11913         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11914
11915         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11916
11917         * basic-calls.cs: Add a test for proper float argument passing.
11918
11919         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11920         if the context corresponds to an exception received through a signal.
11921
11922         * exceptions.cs: Add a test for nullref handling at the start of a try
11923         clause.
11924
11925         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11926
11927         * jit-icalls.c (mono_break): New JIT icall.
11928
11929         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11930
11931         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11932
11933 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * cpu-*.md: Get rid of unused opcodes.
11936
11937         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11938
11939         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11940         by all platforms.
11941
11942         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11943         define.
11944
11945         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11946         the arch independent trampoline code in mini-trampolines.c.
11947
11948         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11949
11950         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11951
11952         * mini-s390.h: Remove an unused define.
11953         
11954         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11955         the arch independent trampoline code in mini-trampolines.c.
11956
11957         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11958
11959 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11962
11963         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11964
11965         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11966
11967         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11968
11969         * cpu-amd64.md: Use smaller sizes for int opcodes.
11970
11971         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11972
11973         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11974         objects.cs.
11975
11976         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11977         debugging.
11978
11979         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11980         instead of though a pointer to save an indirection when accessing elements of
11981         the array.
11982
11983         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11984         some typos.
11985         (NOT_IMPLEMENTED): New helper macro.
11986         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11987         of a bb.
11988
11989         * *.c: Use the new helper macro.
11990
11991 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11994
11995 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11998         stack slots.
11999
12000 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12001
12002         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12003         profiling is enabled.
12004         
12005         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12006         the end.
12007         (mono_arch_emit_prolog): Add more first bblock optimizations.
12008
12009         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12010         in order if possible.
12011         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12012         bblock, since the arguments are still in their original registers.
12013
12014         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12015
12016 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12019         as well.
12020
12021         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12022         offset 0.
12023
12024         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12025
12026         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12027         process async exceptions received while in unmanaged code.
12028
12029         * mini.c (mini_init): Install a callback with the runtime which will be called
12030         when a thread receives an async exception while in unmanaged code.
12031
12032         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12033
12034         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12035
12036 2008-01-16  Wade Berrier  <wberrier@novell.com>
12037
12038         * cpu-g4.md:
12039         * cpu-arm.md:
12040         * cpu-s390x.md:
12041         fix build
12042
12043 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12044
12045         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12046         compilation with sun cc.
12047
12048         * cpu-*.md: Fix the build.
12049
12050         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12051
12052         * mini-amd64.h: Add some comments to the MonoLMF structure.
12053
12054         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12055         
12056         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12057         in the LMF structure if possible. This saves two instructions in the
12058         managed->native wrappers.
12059
12060         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12061
12062 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12063
12064         * generic-sharing.c: New type argument lookup code which uses the
12065         runtime generic context template.
12066
12067 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12068
12069         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12070
12071         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12072         (mono_arch_output_basic_block): Fix localloc implementation.
12073
12074         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12075
12076         * mini-ia64.c (peephole_pass): Fix ia64 build.
12077
12078         * mini-amd64.c (peephole_pass): Fix a warning.
12079         
12080         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12081         at a constant offset from sp/fp.
12082
12083         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12084         instead of obtaining it from *lmf in the managed method case.
12085
12086 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12087
12088         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12089
12090 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12091
12092         * mini.h (MonoInstList): New type.
12093         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12094         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12095         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12096         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12097         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12098         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12099         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12100         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12101         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12102         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12103         MONO_INST_LIST_FOR_EACH_ENTRY,
12104         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12105         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12106         mono_inst_list_first, mono_inst_list_last,
12107         mono_inst_list_next, mono_inst_list_prev): New instruction
12108         list handling interfaces.
12109         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12110         list head 'ins_list'.
12111         (MonoInst): Replace next pointer with list head 'node'.
12112         (MonoCallInst): Make 'out_args' a MonoInstList.
12113         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12114         (MonoCompile): Delete reverse_inst_list and
12115         reverse_inst_list_len.
12116         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12117         mono_arch_lowering_pass, mono_arch_local_regalloc,
12118         mono_arch_output_basic_block, mono_arch_emit_prolog):
12119         Convert to new instruction lists.
12120         (insert_after_ins): Delete.
12121         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12122         instruction lists.
12123         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12124         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12125         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12126         mono_emulate_opcode, mono_emit_load_got_addr,
12127         inline_method, mono_method_to_ir, mono_print_bb_code,
12128         print_dfn, decompose_pass, nullify_basic_block,
12129         replace_out_block_in_code, remove_block_if_useless,
12130         merge_basic_blocks, move_basic_block_to_end,
12131         try_unsigned_compare, optimize_branches, mono_print_code,
12132         mini_select_instructions, remove_critical_edges): Likewise.
12133         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12134         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12135         mono_arch_output_basic_block, mono_arch_emit_prolog):
12136         Likewise.
12137         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12138         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12139         mono_arch_output_basic_block): Likewise.
12140         (inst_list_prepend, insert_after_ins): Delete.
12141         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12142         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12143         instruction lists.
12144         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12145         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12146         mono_arch_emit_prolog): Likewise.
12147         * cfold.c (mono_constant_fold): Likewise.
12148         * liveness.c (visit_bb, mono_analyze_liveness,
12149         optimize_initlocals): Likewise.
12150         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12151         * graph.c (mono_draw_code_cfg): Likewise.
12152         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12153         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12154         mono_ssa_cprop): Likewise.
12155         * abcremoval (get_relations_from_previous_bb, process_block):
12156         Likewise.
12157         * local-propagation (mono_cprop_invalidate_values,
12158         mono_local_cprop_bb): Likewise.
12159         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12160         peephole_pass, mono_arch_output_basic_block,
12161         mono_arch_emit_prolog): Likewise.
12162         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12163         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12164         mono_arch_emit_prolog): Likewise.
12165         (insert_after_ins): Delete.
12166         * aliasing.c (print_code_with_aliasing_information,
12167         mono_build_aliasing_information, mono_aliasing_deadce):
12168         Convert to new instruction lists.
12169         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12170         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12171         mono_arch_local_regalloc, mono_arch_output_basic_block):
12172         Likewise.
12173         (insert_after_ins): Delete.
12174         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12175         peephole_pass, mono_arch_output_basic_block): Convert to
12176         new instruction lists.
12177         * mini-codegen (InstList, inst_list_prepend,
12178         insert_after_ins): Delete.
12179         (insert_before_ins, get_register_force_spilling,
12180         get_register_spilling, free_up_ireg, free_up_reg,
12181         create_copy_ins, create_spilled_store, alloc_int_reg,
12182         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12183         to new instruction lists.
12184         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12185         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12186         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12187         (insert_after_ins): Delete.
12188         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12189         mono_arch_local_regalloc, mono_arch_output_basic_block,
12190         mono_arch_call_opcode): Convert to new instruction lists.
12191         (insert_after_ins): Delete.
12192         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12193         peephole_pass, mono_arch_output_basic_block,
12194         mono_arch_emit_prolog): Convert to new instruction lists.
12195
12196 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12197
12198         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12199
12200         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12201         Fixes #353182.
12202
12203         * Makefile.am (version.h): Make this work with non-bash shells.
12204
12205 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12206
12207         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12208
12209 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12212         the InitializeArray optimization.
12213
12214 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * mini.c driver.c: Don't include os/gc_wrapper.h.
12217
12218 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * mini.c (print_jit_stats): Print GC statistics if available.
12221
12222 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12223
12224         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12225
12226 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12227
12228         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12229
12230 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12231
12232         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12233         
12234         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12235
12236         * driver.c (mono_main): Ditto.
12237
12238 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12239
12240         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12241
12242         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12243         in the vtable can't be encoded.
12244         (compile_method): Ditto.
12245
12246 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12249         defined.
12250
12251         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12252         lmf->rbp.
12253
12254         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12255         the top LMF entry belongs to the current method.
12256
12257         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12258
12259 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12260
12261         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12262         
12263         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12264
12265         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12266
12267         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12268
12269         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12270
12271         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12272         implementation.
12273
12274         * basic-float.cs: Add an ulong->double cast test.
12275
12276 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini.c (mono_method_to_ir): Fix a warning.
12279
12280 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * mini-ops.h: Add OP_SWITCH.
12283
12284         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12285         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12286
12287 2007-12-11  Geoff Norton  <gnorton@novell.com>
12288
12289         * mini-s390x.c: Minor change to the MAX() define to allow
12290         it to compile with other gcc versions.
12291
12292 2007-12-11  Geoff Norton  <gnorton@novell.com>
12293
12294         * cpu-s390x.md:
12295         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12296
12297 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12298
12299         exceptions-arm.c (mono_arch_get_restore_context): Restore
12300         the frame pointer.
12301
12302         exceptions-arm.c (throw_exception): Save the frame pointer.
12303         This is a partial fix for #323747. Only the client side is
12304         fixed.
12305
12306 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12307
12308         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12309         was using an unrelated variable to log the class which
12310         needed the cctor to be called. This was crashing on arm.
12311
12312 2007-12-09  Robert Jordan  <robertj@gmx.net>
12313
12314         * mini-x86.c (mono_arch_emit_epilog):
12315         Consider all kinds of 64-bit types. Fixes #323114.
12316
12317 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12320
12321 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12324
12325 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini.c: run type ctor before allocating an object, not only
12328         when running it's constructor method (fixes at least part of bug #342507).
12329
12330 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12331         
12332         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12333         
12334         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12335         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12336         function.
12337
12338         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12339         mono_generic_class_init_trampoline () the same as it is done with the other
12340         trampolines.
12341
12342         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12343         aot-runtime.c aot-compiler.c: Implement AOT support.    
12344
12345 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12346
12347         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12348         build for archs which don't have the vtable trampoline defined
12349         yet.
12350
12351 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12352
12353         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12354
12355         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12356
12357         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12358
12359         * tramp-<ARCH>.c: Use the new helper function.
12360
12361 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12362
12363         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12364         trampoline call, which takes a vtable argument.
12365
12366         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12367         OP_TRAMPCALL_VTABLEs like other calls.
12368
12369         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12370         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12371         call.  Implemented a support function which fetches the vtable
12372         from a register set.
12373
12374         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12375         Implemented a generic class init trampoline, using the
12376         OP_TRAMPCALL_VTABLE opcode.
12377
12378         * mini.c: Implemented static field access when sharing generic
12379         code.  This implies initing the class using the new
12380         OP_TRAMPCALL_VTABLE call.
12381
12382 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12383
12384         * mini.c: Don't compile methods with sharing enabled if their
12385         classes are disabled for sharing.
12386
12387 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12390         opcodes. Fixes #346563.
12391
12392         * objects.cs: Add a new test.
12393
12394         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12395
12396         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12397         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12398
12399 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12402
12403 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12406         code stream.
12407
12408 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12411
12412         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12413         optimization in the AOT case.
12414         
12415 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12418         
12419         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12420
12421         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12422
12423         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12424
12425         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12426         is created by the inlined delegate ctor.
12427
12428         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12429
12430         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12431
12432 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12433
12434         * cpu-x86.md: Fix the length of ckfinite.
12435
12436 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12439         
12440         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12441         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12442
12443         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12444
12445         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12446         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12447
12448 2007-11-28  Martin Baulig  <martin@ximian.com>
12449
12450         * mini-x86.c
12451         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12452         after creating the trampoline.
12453
12454 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12455
12456         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12457
12458         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12459         the same version.
12460
12461         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12462         instead of the calling method to help AOT.
12463
12464         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12465
12466 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12469         is defined.
12470
12471 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12472
12473         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12474         
12475         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12476         (encode_method_ref): No need to handle generic method definitions specially.
12477
12478         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12479
12480         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12481         decode_klass_info.
12482
12483         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12484         encode_klass_info.
12485         (compile_method): Enable generic sharing.
12486
12487 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12488
12489         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12490         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12491
12492         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12493         generic code.
12494
12495         * mini-trampolines.c: Fix a warning.
12496
12497         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12498         NEW_PCONST.
12499         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12500         (generic_class_is_reference_type): Remove unused function.
12501
12502         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12503         in the generic vtable trampoline case.
12504
12505         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12506         
12507         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12508         return an AOT method based on a vtable slot.
12509
12510         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12511
12512         * mini.c (mini_get_vtable_trampoline): Export this.
12513
12514 2007-11-22  Martin Baulig  <martin@ximian.com>
12515
12516         * debug-debugger.h
12517         (MonoDebuggerInfo): Move `debugger_version' up.
12518
12519 2007-11-22  Martin Baulig  <martin@ximian.com>
12520
12521         * mini-amd64.c
12522         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12523
12524         * mini-trampolines.c
12525         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12526         after compiling the method.
12527
12528 2007-11-20  Martin Baulig  <martin@ximian.com>
12529
12530         * debug-mini.c
12531         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12532         (mono_debugger_remove_breakpoint): Likewise.
12533         (mono_debugger_check_breakpoints): Likewise.
12534
12535         * debug-debugger.c: Implement the new breakpoint interface here.
12536
12537 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12540         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12541
12542         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12543
12544 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12545
12546         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12547
12548         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12549         mini.c.
12550
12551         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12552         mini.c.
12553
12554         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12555         returning a vtype in a register.
12556
12557         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12558         here from the arch specific code.
12559
12560         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12561         mini.c.
12562
12563         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12564         (mono_arch_emit_prolog): Increment maximum prolog size.
12565
12566         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12567         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12568
12569         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12570         MonoGenericSharingContext.
12571
12572         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12573         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12574
12575 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12576
12577         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12578         which extract fields out of the runtime generic context.  Full
12579         sharing of the NEWARR opcode.
12580
12581 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12582
12583         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12584         --enable-minimal=ssa.
12585
12586 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12587
12588         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12589         mono_marshal_get_delegate_invoke () signature change.
12590
12591 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12592
12593         * mini.c: Removed the shared context in favor of the generic
12594         sharing context.  Allocate the MonoJitInfo structure with room for
12595         the generic sharing context if it's needed.
12596
12597         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12598         domain-internals.h now.
12599
12600         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12601
12602         * generic-sharing.c: Several changes for working without a shared
12603         context and instead operating on open types instead.
12604
12605 2007-11-12  David S. Miller  <davem@davemloft.net>
12606
12607        * inssel-sparc.brg: Fix double instruction emit.
12608
12609 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12610
12611         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12612         Get/Set/Address methods.
12613         
12614         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12615         mono_marshal_get_delegate_invoke signature change.
12616
12617 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12618
12619         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12620         This can happens with dynamic methods. Fixes the other bug in #322722.
12621
12622 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12623
12624         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12625         BX call sequence.
12626
12627         * mini-arm.c (arm_patch): Implement patching of BX call
12628         sequence. Fixes one of the bugs in #322722.
12629
12630 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12631
12632        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12633        under Linux.  We only need to flush every 32-byte cache line.    
12634
12635 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12636
12637         * mini.c:
12638         move_basic_block_to_end: Add branches when needed, eventually creating
12639         a new BB.
12640         optimize_branches: added a parameter that tells if it's ok to create
12641         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12642         and avoid calling move_basic_block_to_end when it's not ok.
12643         Fixes bug 318677.
12644
12645 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12646
12647         * mini.c: Abort inlining call to InitializeArray if something
12648         looks wrong.  Let the icall handle it, which now has proper safety
12649         checks.
12650
12651 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12652
12653         * mini.c (mono_spill_call): add support for soft-float.
12654
12655         * mini.c (mono_method_to_ir): add support for soft-float
12656         to inlined functions that return float.
12657
12658         * mini.c (mono_method_to_ir): add support for soft-float
12659         to cee_stsfld opcode on float fields.
12660
12661 2007-11-05  Geoff Norton  <gnorton@novell.com>
12662
12663         * mini-x86.h: Fix the structure access for X86 Leopard.
12664
12665
12666 2007-11-05  Martin Baulig  <martin@ximian.com>
12667
12668         * mini-trampolines.c
12669         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12670         after compiling the method to notify the debugger.
12671
12672 2007-11-05  Martin Baulig  <martin@ximian.com>
12673
12674         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12675
12676 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12677
12678         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12679         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12680
12681 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12682
12683         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12684         native-to-managed wrappers.
12685         
12686 2007-11-01  Geoff Norton  <gnorton@novell.com>
12687
12688         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12689         members.
12690
12691 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12692
12693         * mini.c, mini-x86.c: when getting back from unmanaged code
12694         to managed via a marshaled delegate we also need to set the
12695         right domain.
12696
12697 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12698
12699         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12700         for amd64.
12701
12702 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12703
12704         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12705         let the debugger or other external agents to tell the JIT when
12706         a sw breakpoint has been inserted in the code that the JIT needs
12707         to be able to inspect.
12708
12709 2007-10-31  Martin Baulig  <martin@ximian.com>
12710
12711         * debug-debugger.h
12712         (MonoDebuggerInfo): Remove `runtime_class_init'.
12713
12714 2007-10-30  Martin Baulig  <martin@ximian.com>
12715
12716         * debug-mini.h
12717         (mono_debugger_thread_created): Added `MonoThread *' argument.
12718         (mono_debugger_extended_notification): New public method.
12719         (mono_debugger_trampoline_compiled): New public method.
12720
12721         * debug-mini.c
12722         (MonoDebuggerThreadInfo): Added `thread' and
12723         `extended_notifications' fields.
12724
12725         * debug-debugger.c
12726         (debugger_executable_code_buffer): New static variable.
12727
12728         * debug-debugger.h
12729         (MonoDebuggerInfo): Added `executable_code_buffer',
12730         `executable_code_buffer_size', `breakpoint_info_area',
12731         `breakpoint_table' and `breakpoint_table_size'.
12732
12733 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12734
12735         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12736         that IP  either is an unused value or the vtable pointer. IMT 
12737         calls use vtable + offset now. Reduced by almost half the size
12738         of IMT entries.
12739
12740 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12741
12742         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12743         defines to access param registers. Replace long usage with
12744         gsize as sizeof(long) != sizeof(void*) on Win64.
12745
12746         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12747         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12748         instead of non-existant _GetAddressOfReturnAddress.
12749
12750         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12751         param registers. Save/restore %rdi and %rsi in MonoLMF.
12752
12753         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12754         param registers. Modify (throw_exception) signature to take 
12755         %rdi and %rsi on Win64. 
12756
12757         Code is contributed under MIT/X11 license.
12758
12759 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12760
12761         * helpers.c: unlink debugging output files.
12762
12763 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini.c: Move mono_create_ftnptr () to object.c.
12766
12767 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12768
12769         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12770         optional. This function can now be used to disassemble code generated
12771         outside the JIT such as trampolines and IMT thunks.
12772
12773         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12774
12775         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12776         vtable pointer from a ldr instruction.
12777
12778         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12779         new IMT call sequence.
12780
12781         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12782         call sequence for interface invocations.
12783
12784         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12785         for imt support. This function is empty since IMT on ARM requires no
12786         special handling on the IR side.
12787
12788         * mini-arm.c (mono_arch_find_imt_method): added, required for
12789         imt support.
12790
12791         * mini-arm.c (mono_arch_find_this_argument): added, required
12792         for imt support.
12793
12794         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12795         a ldr instruction to load a value stored in the code stream.
12796
12797         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12798         for imt support.
12799
12800
12801 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * mini.c (mini_init): Install the jump trampoline callback.
12804
12805 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12806
12807         * mini-trampolines.c: handle synchronized methods with the common
12808         vtable trampoline (bug #335601).
12809
12810 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12813
12814         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12815         64 bit platforms.
12816
12817         * mini-ia64.h mini-ia64.c: Add support for IMT.
12818
12819         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12820         prolog. Fixes #331958.
12821
12822 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12825
12826 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12827
12828         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12829         trampoline.
12830
12831 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12832
12833         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12834         trampoline.
12835
12836 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12837
12838         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12839         trampoline.
12840
12841 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12842
12843         * mini-trampolines.c: changed the magic rampoline to understand
12844         the common vtable trampoline method: the method to invoke is
12845         determined by the vtable displacement of the call.
12846
12847 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12848
12849         * mini.c, mini.h: register the common vtable trampoline if the
12850         architecture supports it.
12851
12852 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12853
12854         * cpu-amd64.md: use the correct max length for tls_get.
12855
12856 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12859         CEE_STELEM_ANY. Fixes #333696.
12860
12861 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12862
12863         * exceptions-x86.c: provide more graceful handling of the case where
12864         we followed a bogus function pointer from managed code (bug #332866).
12865
12866 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12867
12868         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12869         replaces the generic_shared flag and will carry more information
12870         in the future.
12871
12872         * generic-sharing.c: Added mini_type_stack_size() which allows
12873         allows open types if given a generic sharing context.
12874         mini_get_basic_type_from_generic() takes a
12875         MonoGenericSharingContext* instead of a MonoCompile* now.
12876
12877         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12878         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12879         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12880         changes above.  Just passing arguments through to the right
12881         places.
12882
12883 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12884
12885         * mini-arm.c: unify the call emission to emit_code_seq().
12886
12887 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12888
12889         * tramp-arm.c: reduced the trampoline size.
12890
12891 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12892
12893         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12894         variable handling out of arch-specific code.
12895
12896 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12897
12898         * mini-arm.c: implemented fast delegate dispatch.
12899
12900 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12903         that fp elimination is turned off if the space required by locals is too
12904         big. Fixes #331958.
12905
12906 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12907
12908         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12909         ARM to the new style trampoline.
12910
12911 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12914
12915         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12916
12917 2007-10-09  Martin Baulig  <martin@ximian.com>
12918
12919         * debug-debugger.h
12920         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12921         `field_info_offset_offset'.     
12922
12923 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12924
12925         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12926         removed more internal usage of the r11 register and made it available
12927         to the register allocator.
12928
12929 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12930
12931         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12932         when sharing generics and treat type variables as references.
12933
12934 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12935
12936         * mini-ppc.c: started removing the internal uses of register r11
12937         to eventually allow the register allocator to manage it as an
12938         additional available register.
12939
12940 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12941
12942         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12943
12944 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12945
12946         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12947         specific trampolines as they are not performance critical as a jump
12948         target (maybe align as before only for AOT code?). This saves about
12949         200 KB of native code on x86 for monodevelop startup.
12950
12951 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12952
12953         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12954         monodevelop startup.
12955
12956 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12959
12960         * mini-sparc.h mini-sparc.c: Implement IMT support.
12961
12962         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12963         its smaller and doesn't clobber sparc_g1.
12964
12965         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12966
12967 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12968
12969         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12970
12971 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12972
12973         * mini-ppc.c: implemented fast delegate invocation.
12974
12975 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12976
12977         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12978
12979 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12980
12981         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12982         code to the new style trampoline in preparation for IMT support.
12983
12984 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12985
12986         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12987         systems already. This also reduces the specific trampiline sizes and
12988         prepares for the use of r12 as the IMT identifier register.
12989
12990 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12991
12992         * mini-mips.h: endianess fix (simplified from a patch by
12993         Thomas Kunze <thommy@tabao.de>, bug #323737).
12994
12995 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12996
12997         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12998         to access ucontext fields and enable netbsd support
12999         (partially from Magnus Henoch <mange@freemail.hu>).
13000
13001 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13002
13003         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13004         use the preprocessor from the CPP env var if it is set.
13005
13006 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13007
13008         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13009         code, before interface_offset gets used.
13010
13011 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13014         mono_class_setup_vtable () before accessing klass->vtable.
13015
13016 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13019         hackish.
13020
13021 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13022
13023         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13024         IMT slots (this saves hundreds of KB of memory in programs like
13025         IronPython and Monodevelop).
13026
13027 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13028
13029         * mini.c: print the delegate counter.
13030
13031 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13032
13033         * mini-x86.c: make it easier to enable the debugging code for IMT
13034         slots.
13035
13036 2007-09-28  Martin Baulig  <martin@ximian.com>
13037
13038         * debug-debugger.h
13039         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13040         `mono_method_klass_offset' and `mono_method_token_offset'.
13041
13042 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13043
13044         * mini.c: First generics sharing implementation.  Can only share
13045         in very simple cases.  If sharing doesn't work it falls back to
13046         dedicated compilation.
13047
13048         * mini.h: Flag in MonoCompile to specify whether generic
13049         compilation is shared.  Flags enum for marking which generic inst
13050         of a context is used.  Prototypes for helper functions.
13051
13052         * generic-sharing.c: Helper functions for generic method sharing.
13053
13054         * optflags-def.h: Optimization flag (gshared) for enabling generic
13055         method sharing added.
13056
13057         * Makefile.am: generic-sharing.c added.
13058
13059 2007-09-19 Daniel Nauck <dna@mono-project.de>
13060
13061         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13062
13063 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13064         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13065         fixes bug 325507.
13066
13067 2007-09-19  Martin Baulig  <martin@ximian.com>
13068
13069         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13070         mono_debug_cleanup() is now part of mono_cleanup().
13071
13072 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13073
13074         * driver.c (mono_main): Fix a warning.
13075
13076 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * aot-compiler.c: Optimize various parts when processing large assemblies.
13079         Fixes ##325568.
13080
13081         * mini.c (mono_patch_info_hash): Improve hash function.
13082
13083 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13084
13085         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13086         
13087         Code is contributed under MIT/X11 license.
13088
13089 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * mini.c (mini_init): Fix a leak.
13092
13093         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13094
13095 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13096
13097         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13098
13099 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13100
13101         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13102
13103 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13106         variance tests.
13107
13108         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13109
13110         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13111
13112         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13113
13114         * aot-runtime.c (decode_patch_info): Ditto.
13115
13116 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13117
13118         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13119         static case. Cache delegates in architecture specific code, 
13120         based on number of parameters.
13121         
13122         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13123         in architecture specific code, based on number of parameters.
13124         
13125         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13126         caching happen in architecture specific code now.
13127         
13128         Code is contributed under MIT/X11 license.
13129
13130 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13131
13132         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13133         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13134         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13135
13136         Code is contributed under MIT/X11 license.
13137
13138 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13139         * mini.c: (mono_thread_abort) Fixed bug #82416.
13140
13141 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13142
13143         * mini.: hook the new managed GC allocation feature into the JIT.
13144
13145 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13146
13147         * mini.c: implementation for the new runtime tls opcode.
13148
13149 2007-09-11  Martin Baulig  <martin@ximian.com>
13150
13151         * debug-debugger.h
13152         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13153         `mono_method_inflated_offset'.
13154
13155 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13156
13157         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13158         async exceptions into a method.
13159
13160         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13161         purpose of testing whenever the unwinder works at every instruction.
13162
13163 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13164
13165         * mini.c: check accessibility of method used in ldftn (fixes
13166         bug #82635).
13167
13168 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13169
13170         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13171
13172         * inssel.brg: Fix a warning.
13173
13174 2007-09-03  Martin Baulig  <martin@ximian.com>
13175
13176         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13177         now takes the `main_method' as argument.
13178
13179 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13180
13181         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13182
13183 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13184
13185         * driver.c: include the cil-coff.h header on Windows.
13186         
13187         Code is contributed under MIT/X11 license.
13188
13189 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13190
13191         * mini.c, driver.c: don't include the cil-coff.h header.
13192
13193 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13194
13195         * mini.c: flag places that needs fixes fo soft-float support.
13196
13197 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13198
13199         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13200         endian systems (partially from Dean Jenkins, bug #81924).
13201
13202 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13203
13204         * mini.c (check_linkdemand): Remove embedded reference object in
13205         call to LinkDemandSecurityException.
13206         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13207         with an IntPtr instead of a reference object.
13208
13209 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13210
13211         * mini.c (handle_initobj): Handle alignment properly.
13212
13213         * inssel.brg (mini_emit_memset): Ditto. 
13214
13215         * inssel.brg (mini_emit_memcpy): Ditto. 
13216
13217         * inssel-sparc.brg: Ditto.              
13218
13219         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13220
13221 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13222
13223         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13224         exceptions raised in unmanaged code. Fixes part of #82594.
13225
13226 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13227
13228         * mini.c (mono_method_to_ir), declsec.c
13229         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13230
13231 2007-08-22  Martin Baulig  <martin@ximian.com>
13232
13233         * debug-mini.h
13234         (MonoDebuggerThreadInfo): New typedef.
13235         (mono_debugger_thread_table): New global variable.
13236         (mono_debugger_thread_created): New public function.
13237         (mono_debugger_thread_cleanup): New public function.
13238
13239         * debug-debugger.h
13240         (MonoDebuggerInfo):
13241         - removed `get_current_thread' and `lookup_assembly'.
13242         - removed `data_table'.
13243         - added `thread_table'.
13244
13245         * mini.c
13246         (mono_thread_start_cb): Call mono_debugger_thread_created().
13247         (mono_thread_attach_cb): Likewise.
13248         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13249         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13250         initial domain.
13251
13252         * driver.c (mono_main): Move mono_debug_init() up, before calling
13253         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13254
13255 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13256
13257         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13258         together when passing several arguments of type double (gives a small
13259         speedup and saves a few bytes of generated code).
13260
13261 2007-08-20  Jb Evain  <jbevain@novell.com>
13262
13263         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13264
13265 2007-08-20  Jb Evain  <jbevain@novell.com>
13266
13267         * mini.c (mono_method_to_ir): throw MethodAccessException
13268         and FieldAccessException instead of InvalidProgramException.
13269
13270 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13271
13272         * mini.c: CoreCLR security checks.
13273
13274         * mini.h: Removed MonoSecurityMode (moved to
13275         metadata/security-manager.h) and mono_security_mode global var
13276         (replaced by set/get functions in security-manager.h).
13277
13278         * driver.c: Added "core-clr-test" security mode for testing.  Used
13279         set-function for setting security mode.
13280
13281 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13282
13283         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13284         the new jit_info_table.
13285
13286         * driver.c: Test code for the new jit_info_table (enabled by the
13287         define MONO_JIT_INFO_TABLE_TEST).
13288
13289 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13292         detection of call <REG> instruction sequence. Fixes build on freebsd.
13293
13294 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * mini-exceptions.c: Fix a warning.
13297
13298 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13301         stack overflow handling code on amd64 too.
13302
13303         * mini-exceptions.c (mono_setup_altstack): Make this use 
13304         mono_thread_get_stack_bounds ().
13305
13306         * mini-x86.h: Disable sigaltstack on solaris x86.
13307
13308 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13311
13312 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13313
13314         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13315
13316 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13317
13318         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13319
13320         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13321
13322 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13323
13324         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13325         due to alignment.
13326
13327 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13328
13329         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13330         to be emitted (bug #82281).
13331
13332 2007-08-01  Martin Baulig  <martin@ximian.com>
13333
13334         Merged the `debugger-dublin' branch.
13335
13336         * debug-debugger.h (MonoDebuggerInfo):
13337         Removed the `old_*' compatibility entries.
13338         Added `debugger_version' and `data_table'.
13339         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13340         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13341
13342         * debug-mini.c
13343         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13344         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13345         instead of a `gconstpointer'.
13346         (mono_debugger_insert_method_breakpoint): Return a
13347         `MonoDebugMethodAddressList *'.
13348
13349 2007-06-28  Martin Baulig  <martin@ximian.com>
13350
13351         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13352
13353 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13356         __builtin_frame_address () since it is broken on older gcc versions.
13357
13358 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13359
13360         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13361         on the stack overflow handling and made the managed stack overflows
13362         catchable in most cases using soft guard pages.
13363         * exceptions-x86.c: added code to restore the protection in the soft
13364         guard pages at the end of exception handling.
13365
13366 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13369
13370 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13371
13372         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13373         exception handling.
13374
13375 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13376
13377         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13378         signal handling support until it has been ported to the new mechanism.
13379         * mini.c: fixed stack overflow detection and use the new
13380         architecture code  to handle signals on the altstack.
13381
13382 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13383
13384         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13385         stack overflows on the alt stack.
13386
13387 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13388
13389         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13390         stack overflows on the alt stack.
13391
13392 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13393
13394         * exceptions-ppc.c: cleanup preparing for altstack support.
13395
13396 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13397
13398         * exceptions-arm.c: cleanup preparing for altstack support.
13399
13400 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13401
13402         * mini.c (print_jit_stats): Output hazard pointer stats.
13403
13404 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13405
13406         * driver.c, mini.c: Replaced security mode flags with a single
13407         enum variable.
13408
13409 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13410
13411         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13412
13413 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13414
13415         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13416         (which doesn't do anything yet) for activating Core CLR
13417         (Silverlight) security.
13418
13419 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13420
13421         * mini-codegen.c: work around a possible gcc bug on arm.
13422
13423 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13424
13425         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13426         message for platforms that don't support AOT compilation.
13427
13428 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13429
13430         * mini.h, mini.c, driver.c: temporary smcs hack.
13431
13432 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini-arm.h, mini-arm.c: arm EABI fixes.
13435
13436 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13439         case.
13440
13441         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13442         trampolines taking a method argument.
13443
13444         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13445
13446         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13447         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13448
13449         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13450         JIT compilation throws an exception. Fixes #82050.
13451
13452 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13453
13454         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13455         with the MONO_EXCEPTION_ defines.
13456
13457 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13460         #82117.
13461         
13462         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13463         the cause of an assertion.
13464
13465 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13466
13467         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13468         removed.
13469
13470 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13473         assert. Should fix #82103.
13474
13475 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13476
13477         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13478         here too. Fixes #82095.
13479
13480         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13481         addresses.
13482
13483         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13484
13485         * mini-amd64.h: Enable IMT for amd64.
13486         
13487         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13488
13489 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13492
13493 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13494
13495         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13496         as soon as check_linkdemand sets an exception_type.
13497
13498 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13499
13500         * mini-x86.c: fixed offsets for IMT call sequence.
13501         * mini-x86.h: enable IMT again.
13502
13503 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * trace.c (mono_trace_enter_method): Decode MonoType too.
13506
13507         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13508
13509         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13510
13511         * mini-amd64.c: Add preliminary IMT implementation.
13512         
13513 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13514
13515         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13516         understand the new IMT-base interface invocation (thanks to
13517         Daniel Nauck for the report and the remote debugging session).
13518
13519 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13520
13521         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13522
13523 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13524
13525         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13526
13527 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13528
13529         * mini-trampolines.c: implement AOT IMT support.
13530         * mini-x86.h: enable IMT support for wider testing.
13531
13532 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * inssel.brg (emit_imt_argument): Add aot support here.
13535
13536         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13537
13538 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13539
13540         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13541         of the IMT implementation, partially from massi, with my
13542         implementation of the bsearch sequence. Disabled by default until
13543         the AOT code is implemented.
13544
13545 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13546
13547         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13548
13549         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13550
13551 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13552
13553         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13554         arch-independent IMT JIT code from Massimiliano
13555         Mantione (massi@ximian.com) with small cleanups from me.
13556
13557 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13558
13559         * Makefile.am: fix svn invocation to get the svn revision to be
13560         independent of the local language (build fix).
13561
13562 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13563
13564         * mini.c (inline_method): Reset cfg->exception_type if the
13565         inlining is aborted.  Fixes: 82049.
13566
13567 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13568
13569         * mini.c: remove assert from exception handling code when exception_ptr
13570         is not set.
13571
13572 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * mini.c (mono_codegen): Add an assert.
13575
13576         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13577         enter and leave code.
13578         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13579
13580 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13581
13582         * mini-ppc.c: fixed memory corruption for localloc(0)
13583         (bug #81852).
13584
13585 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13586         
13587         * mini.c: Fix warnings.
13588
13589 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13590
13591         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13592         to emit better double->int conversions.
13593
13594 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13595
13596         * mini.c: the provided Min/Max optimizations are valid for unisgned
13597         ints.
13598
13599 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13600
13601         * 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
13602
13603 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13604
13605         * mini.c (mono_running_on_valgrind): Add support for reporting the
13606         method and  its boundaries to valgrind.
13607
13608 2007-06-28  Martin Baulig  <martin@ximian.com>
13609
13610         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13611
13612 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13615
13616         * generic.2.cs: Add new test case.
13617
13618 2007-06-25  Martin Baulig  <martin@ximian.com>
13619
13620         Merged the `debugger-dublin' branch.
13621
13622         * debug-mini.c
13623         (mono_debugger_insert_method_breakpoint): New public method.
13624         (mono_debugger_remove_method_breakpoint): Likewise.
13625         (mono_debugger_check_breakpoints): New static method.
13626         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13627
13628         * debug-debugger.h (MonoDebuggerInfo):
13629         Renamed (to keep backward compatibility in the vtable):
13630         `insert_breakpoint' -> `old_insert_breakpoint'.
13631         `remove_breakpoint' -> `old_remove_breakpoint'.
13632         `create_string' -> `old_create_string'.
13633         `lookup_class' -> `old_lookup_class'.
13634         `lookup_type' -> removed; changed into a dummy field.
13635         `lookup_assembly' -> `old_lookup_assembly'.
13636         Added (same functionality, but different signature):
13637         `create_string', `lookup_class', `lookup_assembly'
13638         Added new:
13639         `get_method_addr_or_bpt', `remove_method_breakpoint',
13640         `runtime_class_init'.
13641
13642         * debug-debugger.c: Merged the `debugger-dublin' branch.
13643
13644 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13647         well.
13648         (peephole_pass): Likewise.
13649
13650 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13651
13652         * driver.c: hopefully make setaffinity work also for ancient
13653         versions of linux.
13654
13655 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13656
13657         * driver.c : win32 build fix.
13658
13659 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13660
13661         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13662         processor if it is set.
13663
13664 2007-06-21  Martin Baulig  <martin@ximian.com>
13665
13666         * debug-mini.h: New file.
13667
13668         * debug-mini.c
13669         (mono_debugger_insert_breakpoint_full): Moved here from
13670         ../metadata/mono-debug-debugger.c.
13671         (mono_debugger_remove_breakpoint): Likewise.
13672         (mono_debugger_breakpoint_callback): Likewise.
13673
13674 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13675
13676         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13677         changes in MonoGenericClass.
13678
13679 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13682
13683 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13684
13685         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13686         removal of MonoGenericMethod.
13687
13688 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini-exceptions.c: hooks for the exception events profiling API.
13691
13692 2007-06-14  Randolph Chung  <tausq@debian.org>
13693
13694         * Makefile.ma: Add hppa target.
13695         * mini-arch.h: Include mini-hppa.h
13696         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13697         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13698         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13699
13700 2007-06-14  Randolph Chung  <tausq@debian.org>
13701
13702         * inssel.brg: Add rules for "chained" compare-branch operations so that
13703         a single compare op can affect multiple branches.  Adjust cost for
13704         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13705         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13706         cost for some rules so that they can more easily be overridden by
13707         per-arch rules (with fixes from lupus).
13708         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13709
13710 2007-06-13  Randolph Chung  <tausq@debian.org>
13711
13712         * mini-ops.h: Reorder branch ops so that they match the order of the
13713         corresponding CEE_* ops.  The code expects them this way.
13714         Add new ops for HPPA target.
13715         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13716
13717 2007-06-13  Randolph Chung  <tausq@debian.org>
13718
13719         * mini-exceptions.c: Handle cases where the stack grows towards
13720         larger addresses.
13721         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13722
13723 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13724
13725         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13726         counter.
13727         * driver.c: explain where a non-matching corlib is found.
13728
13729 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13730
13731         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13732
13733 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13734
13735         * mini-exceptions.c: Generate a method profile leave event during
13736         an exception to ensure that the profiler gets notified.
13737
13738 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13739
13740         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13741         branch.
13742
13743         * cpu-amd64.md: Add long_and/or/xor opcodes.
13744
13745 2007-06-06  Wade Berrier  <wberrier@novell.com>
13746
13747         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13748         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13749         length of instruction shr_imm (expected 8, got 10)
13750
13751 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13752
13753         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13754
13755 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13756
13757         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13758         MonoInternalHashTable again (fixed bug in the internal hash table
13759         code).
13760
13761 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13762
13763         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13764         Have to figure out what makes it crash the SWF regression.
13765
13766 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13767
13768         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13769
13770 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13771
13772         * mini.c: optimize out the type check when storing null in a
13773         reference array.
13774
13775 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13776
13777         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13778         MonoInternalHashTable.
13779
13780 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13781
13782         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13783         signed integer methods.
13784
13785 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13786
13787         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13788         permanently since the current approach doesn't work.
13789
13790 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13793         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13794
13795 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13796
13797         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13798         the sreg2==rdx case.
13799         
13800         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13801         account if it contains a rex prefix.
13802         (peephole_pass): Handle OP_FMOVE as well.
13803
13804 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13805
13806         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13807         as it causes regressions.
13808
13809 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13810
13811         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13812         static case as well.
13813
13814         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13815
13816         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13817         (mono_arch_get_this_arg_from_call): Ditto.
13818
13819         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13820
13821         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13822         invoke_impl field.
13823
13824         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13825         (mono_arch_get_this_arg_from_call): Ditto.
13826
13827         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13828         
13829         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13830         try to create optimized invoke code and use that for further invocations. 
13831         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13832
13833         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13834
13835 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13836
13837         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13838         sealed classes or methods.
13839         *devirtualization.cs: tests for the new optimization
13840
13841 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13844         by the update_volatile () function.
13845
13846 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13849         require it.
13850
13851         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13852
13853 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13854
13855         * mini.c: Add configure checks for header files.
13856         * mini-x86.c: Add configure checks for header files.
13857         * trace.c: Add configure checks for header files.
13858         * aot-runtime.c: Add configure checks for header files.
13859         * aot-compiler.c: Add configure checks for header files.
13860         * driver.c: Add configure checks for header files.
13861         * mini-codegen.c: Add configure checks for header files.
13862         
13863         Code is contributed under MIT/X11 license.
13864
13865 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13866
13867         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13868         icompare_imm -128 + op_iclt. Fixes #81703.
13869
13870 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13873
13874 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13875
13876         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13877         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13878         so that all isinst checks now use "interface_bitmap".
13879
13880 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13881
13882         * cpu-amd64.md (jmp): Fix a warning.
13883
13884         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13885
13886         * basic.cs: Add new regression test.
13887
13888         * basic.cs: Remove test which is now in basic-long.cs.
13889
13890         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13891
13892         * basic-long.cs: Add new test.
13893         
13894 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13897
13898 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13901
13902         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13903         places.
13904         
13905         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13906         throwing code a bit.
13907
13908         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13909         the exception throwing code a bit.
13910
13911         * mini-x86.c (get_call_info): Allocate result from a mempool.
13912
13913 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13914
13915         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13916
13917         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13918
13919         * mini.h (MonoCompile): Add 'token_info_hash' field.
13920
13921         * mini.c: Save token->method associations during compilation so the AOT 
13922         compiler can use it.
13923         
13924         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13925         which reference generic classes and methods.
13926
13927 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13930
13931         * aot-compiler.c (compile_method): Fix a typo in a comment.
13932
13933         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13934
13935         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13936         everything generic.
13937
13938         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13939
13940 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13941
13942         * mini.h (MonoCompile): Add 'args' field.
13943
13944         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13945         into cfg->args.
13946
13947         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13948
13949 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13952
13953         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13954
13955         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13956         opcodes for some opcodes.
13957
13958         * mini.h *.brg *.c: Use the new opcodes.
13959
13960 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13961
13962         * mini.h: Bumped aot revision.
13963
13964         * inssel.brg: modified code generation of type checks for interfaces
13965         to use the new "MonoClass.interface_bitmap" instead of the old
13966         "MonoClass.interface_offsets".
13967
13968 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13971
13972 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13973
13974         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13975         64 bit platforms.
13976
13977 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13978
13979         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13980
13981 2007-04-27  Wade Berrier  <wberrier@novell.com>
13982
13983         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13984         mini.h) to fix build.
13985
13986 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13989         
13990         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13991         causes the corlib unit tests to fail.
13992
13993 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13994
13995         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13996
13997         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13998
13999         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14000         opcodes to the comparison relations.
14001
14002         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14003         opcodes to their types.
14004         
14005         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14006
14007         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14008         it in cfg->arch.cinfo.
14009
14010         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14011
14012         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14013         cfg->cil_offset_to_bb.
14014
14015 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14018         created becase of initlocals.
14019
14020 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14021
14022         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14023         Sergey Tikhonov <tsv@solvo.ru>.
14024
14025 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14026
14027         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14028
14029 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * cpu-s390.md (break): Correct the length of break instruction.
14032
14033 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14034
14035         * mini.c: fix a couple of soft-float issues and comments.
14036
14037 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14038
14039         * trace.c (is_filenamechar): - is also a filename char.
14040
14041 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14042
14043         * mini-s390.c: Correct checking for enum type in return value processing.
14044
14045 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14046
14047         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14048         (version.h): Makefile is in the build directory.
14049
14050 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14051
14052         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14053
14054 2007-04-11  Martin Baulig  <martin@ximian.com>
14055
14056         * mini.c (can_access_member): Fix handling of generic classes;
14057         fixes #81259.
14058
14059 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14062
14063 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14064
14065         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14066
14067 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14068
14069         * mini-codegen.c: make sure the right spill amount is
14070         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14071
14072 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14073
14074         * mini-ppc.c: fixes for the fp_branch_nan test.
14075
14076 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * basic.cs: Comment out new test which still fails on ia64.
14079
14080 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14081
14082         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14083
14084 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14085
14086         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14087
14088 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14089
14090         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14091         on 64 bit machines. Fixes part of #80738.
14092
14093         * basic.cs: Add regression test.
14094
14095 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14096
14097         * inssel.brg basic.cs: Revert previous change to fix build.
14098
14099         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14100         platforms.
14101         
14102         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14103
14104         * basic.cs: Add new regression test.
14105
14106 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14109         many arguments.
14110
14111 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14112
14113         * cpu-s390x.md: Correct length of break instruction.
14114
14115 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14116
14117         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14118         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14119
14120 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14121
14122         * *.c: Begin WIN64 port.
14123         * mini.c:  Use correct register in profiler.
14124         * mini-amd64.c: No inline assembly on Win64.
14125         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14126         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14127         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14128         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14129         mono_arch_ip_from_context for Win64.
14130         
14131         Contributed under MIT/X11 license.
14132
14133 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14134
14135         * exceptions-amd64.c (seh_handler): Ditto.
14136
14137         * exceptions-x86.c (seh_handler): Fix a memory leak.
14138
14139 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14140
14141         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14142         mini-s390x.c: fixed peephole optimizations to deal
14143         correctly with 1 and 2 byte reload avoidance.
14144
14145 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14146
14147         * cpu-s390.md, cpu-s390x.md: update localloc length.
14148
14149 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14150
14151         * cpu-g4.md: added missing descriptions.
14152
14153 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14154
14155         *  Makefile.am: Add support so the tail tests are not executed on
14156         PowerPC as that is a known limitation of the PowerPC port.
14157
14158 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14159
14160         * runmdesc.bat:  Move to msvc directory.
14161         
14162 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14163
14164         * runmdesc.bat:  Run executable that was produced by the current
14165         target and sent via an argument.
14166         
14167 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14168
14169         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14170         #81102.
14171
14172         * generics.2.cs: Add regression test.
14173
14174 2007-03-09  Wade berrier  <wberrier@novell.com>
14175
14176         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14177
14178 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14179
14180         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14181         AOT code depends on this.
14182
14183 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14184
14185         * mini.c: more precise tracking of types in the eval stack
14186         (part of fix for bug #81044).
14187
14188 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14189
14190         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14191
14192         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14193
14194 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14197
14198         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14199
14200 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14203         a pointer on 64 bit systems. Fixes #80190.
14204
14205         * iltests.il: Add new regression test.
14206
14207 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14208
14209         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14210
14211 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14212
14213         * trace.c: Remove an erroneous alignemnt check when tracing.
14214           Fixes --trace on OSX86.
14215
14216 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14217
14218         * mini-$(arch).h: initialize SP in context for all the archs.
14219
14220 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14221
14222         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14223         regressions in the thread tests.
14224
14225 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14226
14227         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14228         - fixed implementation of LOCALLOC opcode
14229         - implemented non-un compare for floats
14230         - code cleanup
14231         - implementation of FDIV and CKFINITE opcodes
14232         - fixes for latest mono updates
14233         - additional arch opcodes
14234
14235 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14236
14237         * Makefile.am: simplify and merge rules for cross-compilation.
14238
14239 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14240
14241         * local-propagation.c: Actually *apply* the fix for bug 80591...
14242
14243 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14244
14245         * mini-exceptions.c: backuot part of the last change
14246         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14247
14248 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14249         * inssel.brg: Fix bug 59286.
14250
14251
14252 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14253
14254         * mini-exceptions.c: patch from Zoltan to correctly check for
14255         stack boundaries (using the stack register, not the frame register),
14256         fixes bugs #80724, #79717.
14257
14258 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14259
14260         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14261         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14262
14263         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14264         presence of frame pointer elimination.
14265
14266 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14267         
14268         * mini-x86.h: NetBSD UCONTEX_REG defines.
14269
14270 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14271
14272         * inssel-amd64.brg: Fix amd64 build.
14273
14274 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14275
14276         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14277         on amd64.
14278
14279 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14282         ends.
14283
14284         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14285
14286 2007-01-30 Mark Mason <mason@broadcom.com>
14287
14288            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14289            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14290            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14291            beginning support for CEE_JMP [not quite working yet]
14292            * tramp-mips.c: LMF handling now works
14293         
14294 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14297
14298         * mini.h (NULLIFY_INS): New macro.
14299
14300 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.c: statistical profiler fix for windows, patch
14303         from Tor Lillqvist (tml@novell.com).
14304
14305 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14306         * local-propagation.c: Fix bug 80591.
14307
14308 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14309
14310         * Makefile.am: put back the --export-dynamic option as with
14311         the previous gmodule flags (thanks to Robert Jordan).
14312
14313 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14314
14315         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14316
14317         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14318         simplify and speed up the local register allocator. Also rename some fields
14319         like iassign->vassign.
14320         
14321         * regalloc.c: Remove some functions which are no longer used since their
14322         inlined version is in mini-codegen.c.
14323         
14324         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14325
14326         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14327
14328 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14331         narrowing. Fixes #80622.
14332
14333         * iltests.il: Add new regresssion test. 
14334
14335 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14336
14337         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14338         debug-debugger.c, debug-debugger.h: warning fixes.
14339         * driver.c: updated copyright year and made it fit in one line.
14340
14341 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14342
14343         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14344
14345 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14346
14347         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14348
14349         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14350
14351         * iltests.il: Add new test for bug #80507.
14352
14353 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14354
14355         * mini-arm.h: use soft-float also on vfp for now.
14356
14357 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14358
14359         * mini.c: fix some more soft-float issues.
14360
14361 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14362
14363         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14364
14365 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14366         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14367         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14368         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14369
14370 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14371
14372         * mini-arm.c: typo fix.
14373
14374 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14375
14376         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14377
14378 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14379
14380         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14381         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14382
14383         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14384
14385         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14386
14387         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14388         
14389         * inssel.brg: Fix a warning.
14390
14391         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14392
14393         * abcremoval.c ssa.c ssapre.c: Update after this change.
14394         
14395         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14396
14397         * dominators.c (df_set): Use mono_bitset_union_fast.    
14398
14399 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14400
14401         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14402         mini-codegen.c: reduce relocations and memory usage for the cpu
14403         description.
14404
14405 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14408
14409         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14410         to reduce their size.
14411
14412 2007-01-19 Mark Mason <mason@broadcom.com>
14413
14414         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14415         * mini-mips.c: more configuration macros, support long conditional branches, additional
14416         asserts, fix epilog instrumentation.
14417         * mini-mips.h: use standard stack walk
14418         * cpu-mips.md: increase size of div, rem and conditional branches
14419         
14420 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14421
14422         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14423         to cpu spec data.
14424
14425 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14428         (compile_method): Ditto.
14429
14430         * aot-runtime.c (decode_klass_info): Ditto.
14431
14432         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14433         needed by the code generated by inssel.brg. Also fix a warning.
14434
14435 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14436
14437         * mini.c: deal with enums that become genericinsts by
14438         being nested in a generic class (bug #79956).
14439
14440 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14441
14442         * mini.c: match the generic definition to check for
14443         private access with generic types (bug #78431).
14444
14445 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14446
14447         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14448         to make life easier for people cross-compiling that insist on not
14449         using scratchbox.
14450
14451 2007-01-17 Mark Mason <mason@broadcom.com>
14452
14453         * inssel-long.brg: patch to deal with mips missing flags
14454         * inssel-long32-mips.brg: implement overflow checks
14455         * insset-mips.brg: implement overflow checks
14456         * mini-mips.h: implement conditional exception handling
14457         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14458           Remove unused code, minor cleanups.
14459         * exceptions-mips.c: minor cleanups
14460         * mini-ops.h: add mips conditional exception ops
14461         * cpu-mips.md: add mips conditional exception ops
14462
14463         
14464 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14467         to deal with mips missing of flags.
14468
14469 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14470
14471         * exceptions-ppc.c: execute fault handlers.
14472
14473 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14474
14475         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14476
14477 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14478
14479         * mini.c: handle also floating point values in initialize_array.
14480
14481 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14482
14483         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14484         array initialization and make it conditional on the intrins option.
14485
14486 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14487
14488         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14489         relocations and put the patch info names close to the enum definition.
14490
14491 2007-01-15 Mark Mason <mason@broadcom.com>
14492
14493         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14494
14495 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14496
14497         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14498
14499 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14500
14501         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14502
14503 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14504
14505         * Makefile.am: distribute the mips sources.
14506
14507 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14508
14509         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14510         directly.
14511
14512 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14513
14514         * cpu-x86.md: back out for now as this triggers other regressions.
14515
14516 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14517
14518         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14519         to eax:edx, so ecx can't get allocated to them (bug #80489).
14520
14521 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14522
14523         * mini.c, mini-exceptions.c: enabled running fault handlers
14524         (bug #80469).
14525
14526 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14527
14528         * driver.c: If nothing fail, do not use the string "failed",
14529         because it makes it very annoying to view test result logs on the
14530         web. 
14531
14532 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14533
14534         * debug-debugger.c (mono_debugger_main): Rename "main" to
14535         "main_method" to prevent a warning.
14536
14537         Remove a warning for unused field.
14538
14539 2006-12-28  Martin Baulig  <martin@ximian.com>
14540
14541         * debug-debugger.c
14542         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14543
14544 2006-12-22  Martin Baulig  <martin@ximian.com>
14545
14546         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14547         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14548         seperate `.mdb_debug_info' section, so we can access it from the
14549         debugger even if the binary is stripped.
14550
14551         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14552         from the `.mdb_debug_info' here to prevent the linker from
14553         removing that section.
14554
14555         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14556         mdb-debug-info64.s.
14557
14558 2006-12-19  Robert Jordan  <robertj@gmx.net>
14559
14560         * mini-x86: enable the code to return small structures in
14561         registers for FreeBSD as well. Fixes bug #80278.
14562         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14563
14564 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14565
14566         * mini-x86.c: align the stack when calling the profiler
14567         function instrumenting the prolog (on OSX).
14568
14569 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14570
14571         * mini.c: emit a break opcode where Debugger.Break () is called.
14572
14573 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14574
14575         * mini.c (mono_method_to_ir): Provide useful information on this
14576         assert, to prevent others from debugging like I did.
14577
14578 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14579
14580         * mini.c: enable code which was incorrectly commented
14581         (bug #80235).
14582
14583 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14584
14585         * mini-x86.c: enable on OSX, too, the code to return small
14586         structures in registers.
14587
14588 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14589
14590         * mini-x86.c: remove the use of the dynamic code manager here, too.
14591
14592 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14593
14594         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14595         mono_debugger_create_notification_function() to use
14596         mono_global_codeman_reserve () instead of a dynamic code manager.
14597
14598 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14601         ves_array_element_address() jit icall and use a generated
14602         managed method instead (which is about 4 times faster for a rank 3
14603         array access).
14604
14605 2006-11-29  Mark Mason  <mason@broadcom.com>
14606
14607         * basic-calls.cs: additional tests for passing
14608         structures as function arguments.
14609
14610 2006-11-29  Mark Mason  <mason@broadcom.com>
14611
14612         * mini-mips.h: disable custom exception handling
14613         * mini-mips.c: throw/rethrow should use jalr to call
14614         exception stubs.  Fixed bug with passing structures
14615         by value. More support for tracing floating point
14616         functions.
14617
14618 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14619
14620         * mini.c: fixed typo in the soft-float ldind.r4 handling
14621         (bug #80086).
14622
14623 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14624
14625         * mini.c, mini.h, driver.c: added --runtime command line
14626         option to select a different runtime than the autodetected one.
14627         * jit.h: added API for embedders to initialize with a specific
14628         runtime version.
14629
14630 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14631
14632         * mini.c: handle also boxing of r4 values (bug #80024).
14633
14634 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14635
14636         * mini-ppc.c: force indirect calls until we reserve
14637         enough address space for all the generated code.
14638
14639 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14640
14641         * exceptions-arm.c: workaround bugs in the libc definition
14642         of struct ucontext.
14643
14644 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14645
14646         * inssel.brg: fixes from me and Mark Mason.
14647
14648 2006-11-23  Dick Porter  <dick@ximian.com>
14649
14650         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14651         semaphore display now we've fixed the initial value
14652
14653 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14654
14655         * inssel.brg: partially revert the last change to fix the build.
14656
14657 2006-11-21  Mark Mason  <mason@broadcom.com>
14658
14659         * inssel.brg: Add and use compare-and-branch macros to support
14660         architectures that do not have condition code registers (ie. MIPS).
14661         * *-mips.{c,brg,md}: Fix copyright statements
14662
14663 2006-11-20  Mark Mason  <mason@broadcom.com>
14664
14665         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14666         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14667         * mini.h: Added declaration for mono_print_ins()
14668         * mini-codegen.c: added ins_spec initializer for MIPS
14669         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14670         vreg to be virtual and hreg to be non-virtual.
14671         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14672         is not yet working/implemented correctly.
14673         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14674         non-static, fixup calls to print_ins() from other parts in the file.
14675
14676 2006-11-20  Mark Mason  <mason@broadcom.com>
14677
14678         * basic-calls.cs: added tests for passing structures as arguments
14679         to calls.
14680
14681 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14682
14683         * inssel-long32.brg: optimize signed division by power of two.
14684
14685 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14686
14687         * mini-arm.c: added support for interworking with thumb code
14688         (mono must be still be built using the ARM instruction encoding).
14689
14690 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14691
14692         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14693         verifier has different rules for it.   Fixes a few verifier issues
14694         in the test suite.
14695
14696         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14697         at the end, so people know what happened.
14698
14699 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14700
14701         * brach-opts.c: in optimize_exception_target() make sure we
14702         are in a catch clause (fixes bug #79871).
14703
14704 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14705
14706         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14707         more soft-float support fixes.
14708
14709 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14710
14711         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14712         that are passed half on the stack and half in registers.
14713
14714 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14715
14716         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14717         more mips integration work from Mark E Mason 
14718         <mark.e.mason@broadcom.com>.
14719
14720 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14721
14722         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14723         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14724         tramp-mips.c: added sources for the mips port, not
14725         integrated in the build yet. Contributed by
14726         Mark E Mason <mark.e.mason@broadcom.com>.
14727
14728 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14729
14730         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14731
14732 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14733
14734         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14735         put the soft-float rules in its own file since it seems to
14736         break s390 compilation.
14737
14738 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14739
14740         * mini-arm.c: fixed wrnings.
14741
14742 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14743
14744         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14745         inssel-arm.brg: ARM support for soft-float.
14746
14747 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14748
14749         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14750         loads and stores of 32 bit fp values.
14751
14752 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14753
14754         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14755
14756         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14757         works. Fixes #79852 and #79463.
14758
14759 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14762         more soft-float support WIP and fixes.
14763
14764 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini-arm.c: some VFP updates.
14767
14768 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14769
14770         * mini-exceptions.c: 0 is a valid local var offset in some
14771         architectures, don't assert (bug #78508).
14772
14773 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14774
14775         * exceptions-arm.c: fixed off by one error in stack walk code.
14776
14777 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini.h, mini.c: more precise tracking of type load exceptions.
14780
14781 2006-11-03  Robert Jordan  <robertj@gmx.net>
14782
14783         * Makefile.am: [WIN32] Add monow.exe target.
14784         * driver.c: [WIN32] Don't detach the console when debugging.
14785         Fixes bug #79797.
14786         
14787 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14788
14789         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14790
14791 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14794
14795         * driver.c (mini_regression): Fix --regression with AOT.
14796
14797         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14798
14799 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14800
14801         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14802
14803         * mini-sparc.h: Don't use sigaction on sparc/linux.
14804
14805         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14806
14807         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14808
14809         * mini-exceptions.c: Add proper include files for getpid ().
14810
14811 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14812
14813         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14814         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14815         method.
14816
14817         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14818         name cache to reduce its size.
14819
14820         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14821
14822 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14825         the mono_lmf TLS variable.
14826
14827         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14828         trampoline lmf frames.  
14829
14830         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14831
14832 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14835         the mono_lmf TLS variable.
14836
14837         * mini-exceptions.c: Access the LMF structure through accessors.
14838
14839         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14840         variable instead of in jit_tls->lmf.
14841
14842         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14843         
14844         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14845         trampoline lmf frames.
14846
14847         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14848
14849 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14850
14851        * mini.c trace.c mini-x86.c: Revert these too.
14852         
14853        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14854        signature change.
14855
14856 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14857
14858         * genmdesc.c: removed now dead code.
14859
14860 2006-10-09  Robert Jordan <robertj@gmx.net>
14861
14862         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14863
14864 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14865
14866         * mini.h: do not leave gaps in the opcode values.
14867
14868 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14869
14870         * jit-icalls.h: flag functions as internal here, too.
14871
14872 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14873
14874         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14875         functions with the internal attribute.
14876
14877 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14878
14879         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14880
14881 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14882
14883         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14884         for soft-float.
14885
14886 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14887
14888         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14889         tail calls as on other platforms.
14890
14891         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14892
14893         * iltests.il: Add a few tailcall tests.
14894
14895 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14896
14897         * driver.c: fix loop for old compilers (bug #79521).
14898
14899 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14900
14901         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14902
14903         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14904
14905         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14906         metadata without any code.
14907
14908         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14909         more precise debugging information using gdb.
14910
14911 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14912
14913         * inssel-ia64.brg: Make the helper methods static.
14914
14915 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14916
14917         * inssel-x86.brg: make the helper methods static.
14918
14919 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14920
14921         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14922
14923 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14924
14925         * mini.c: updates for monoburg changes.
14926         * inssel.brg: make a few helper functions static as they should.
14927
14928 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14929
14930         * Makefile.am: Move mini-codegen.c to common_sources.
14931
14932 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14933
14934         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14935         instructions.
14936         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14937         mini-ppc.h: port to use the common local register allocator.
14938
14939 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini.h: Remove the comment too then.
14942
14943 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini.h: put back backend.data which is to be used shortly and
14946         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14947         pointers on 4 byte boundaries it'd have much bigger issues running
14948         and you can ifdef it out anyway.
14949
14950 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14953         MonoInst size by 4 bytes on 64 bit machines.
14954
14955 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14956
14957         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14958         replacement with more meaningful field names. Arch maintainers, please
14959         check the assigned names are good enough for your arch.
14960
14961 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14962
14963         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14964         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14965
14966 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14967
14968         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14969         relocations and memory requirements, put the optimization flags
14970         definitions in their own file.
14971
14972 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14975
14976         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14977
14978 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14979
14980         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14981
14982 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14983
14984         * inssel.brg: use the correct function to get the size of an item
14985         in an array, given an element class.
14986         * aot-compiler.c: do not access class->class_size directly.
14987
14988 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14989
14990         * mini.h, debug-mini.c: added a debugging function to print
14991         info about local variables and arguments in a jitted method.
14992
14993 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14996
14997         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14998
14999 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15000
15001         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15002         inner and outer loops when passing vtypes.
15003
15004 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini-ppc.c: take into account the cpu errata for cache flushing
15007         which caused some random errors (bug #79381).
15008
15009 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15012         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15013
15014 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15017         loaded.
15018
15019         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15020         freebsd ports tree.
15021
15022         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15023         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15024
15025         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15026         displacement.
15027
15028 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15029
15030         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15031
15032 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15033
15034         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15035         macro does not have to be changed during debugging.
15036
15037         * 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>.
15038
15039         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15040
15041         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15042         
15043         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15044         MONO_ARCH_NO_EMULATE_MUL is defined.
15045
15046         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15047
15048         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15049
15050         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15051
15052         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15053         
15054 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15055
15056         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15057         stuff to mini-exceptions.c where it is used.
15058
15059         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15060         setup code, the real one is in mini-exceptions.c.
15061
15062         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15063         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15064         some changes from the freebsd ports tree.
15065
15066         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15067         constants.
15068         
15069         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15070
15071 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15072
15073         * mini.c: on Linux, check for /proc to be mounted
15074         (bug# 79351, novell bug#201204).
15075
15076 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15077
15078         * mini.c: handle cases where pthread_attr_getstack() behaves
15079         incorrectly (bug #78096).
15080
15081 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15082
15083         * mini-arm.c: support larger stack frames (bug #79272).
15084
15085 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15088
15089         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15090         tokens.
15091
15092         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15093         mono_class_from_name () to find a class from its name.
15094
15095         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15096
15097 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15098
15099         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15100
15101 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15102
15103         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15104
15105 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15106
15107         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15108         callinfo->trampoline.
15109
15110         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15111         fixes #79271.
15112         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15113         future.
15114
15115 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15118
15119 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15120
15121         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15122         stats.method_trampolines, it is already done by the generic trampoline code.
15123
15124         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15125         
15126 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15127
15128         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15129
15130         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15131
15132         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15133
15134         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15135         
15136         * mini.c (print_jit_stats): Print new stats.
15137
15138         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15139
15140 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15143         Address on two dimensional arrays. Fixes #78729.
15144
15145         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15146
15147         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15148         a method.
15149
15150         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15151
15152         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15153         #79130.
15154         
15155         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15156         a race condition.
15157         (mini_get_ldelema_ins): Ditto.
15158
15159 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15160
15161         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15162         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15163         Fixes #79213.
15164
15165 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15166
15167         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15168         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15169
15170         * exceptions-s390x.c: Cosmetic change.
15171
15172         * tramp-s390.c: Fix warning.
15173
15174         * cpu-s390.md: Correct length of mul_imm.
15175
15176 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15177
15178         * aot-compiler.c: added binary writer with ELF backend
15179         implementation (only on Linux/x86 for now).
15180
15181 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * Makefile.am: Don't run net 2.0 AOT tests.
15184
15185         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15186         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15187
15188         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15189
15190 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15191
15192         * aot-compiler.c: simplified and refactored the asm-writing code
15193         to allow different backends.
15194
15195 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15198
15199         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15200         little. Share patches of type TYPE_FROM_HANDLE as well.
15201
15202         * mini.c (mono_patch_info_equal): New helper function.
15203         (mono_patch_info_hash): Ditto.
15204
15205         * aot-compiler.c (emit_method_code): Fix s390 build.
15206
15207         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15208         is not handled because it is stored as a flag and not as a type ctor. Fixes
15209         #79016.
15210
15211 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15212
15213         * aot-compiler.c: Fix computation of GOT slot statistics.
15214         
15215         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15216         Also remove support for not PIC AOT.
15217
15218         * mini.h: Bump AOT file format version.
15219
15220         * objects.cs: Add a test for #78990.
15221
15222         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15223         (peter.dettman@iinet.net.au). Fixes #79087.
15224
15225         * basic-long.cs: Add a test for the above.
15226
15227 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15228
15229         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15230         
15231         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15232         code somewhat.
15233
15234 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15237         exceptions.
15238
15239 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15240
15241         * mini.c: Don't verify COM proxy invoke calls
15242         
15243
15244 2006-08-10  Dick Porter  <dick@ximian.com>
15245
15246         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15247         which process is holding semaphores locked.
15248
15249 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * mini-ia64.c mini-amd64.c: Fix #79027.
15252
15253         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15254
15255         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15256
15257         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15258         implicit arguments in a vararg call. Fixes #79027.
15259
15260 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15261
15262         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15263         (mono_get_array_new_va_signature): Ditto.
15264
15265 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15266
15267         * aot-runtime.c: Call init_plt lazily.
15268
15269         * inssel-long.brg: Fix unsigned long->int conversion.
15270
15271         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15272
15273         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15274         that most data is now in the .rss/.data section.
15275
15276 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15279
15280         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15281
15282         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15283
15284         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15285
15286         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15287         virtual call. Fixes #79010.
15288
15289         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15290         and use the result as the this argument in the real call.
15291
15292         * generics.2.cs: Add a new test for #79010.
15293         
15294 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini-x86.c: Fix a warning.
15297
15298         * aot-compiler.c: Add a bunch of statistics.
15299
15300         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15301
15302 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15305
15306 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * 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>.
15309
15310 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15311
15312         * mini.c (mono_method_to_ir): Obtain the original method in the
15313         CIL stream and use this to perform validation.
15314
15315         Fixed: #78816
15316
15317 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15318
15319         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15320         (mono_arch_call_opcode): Ditto.
15321
15322         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15323         #78826.
15324
15325         * mini.c (mono_patch_info_dup_mp): New helper function.
15326         
15327         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15328         compilation. Fixes #78827.
15329
15330 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15331
15332         * declsec.c: Use original security informations for
15333           MONO_WRAPPER_MANAGED_TO_MANAGED.
15334
15335 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15336
15337         * mini.c: Allow Com Interop methods/classes and
15338         don't verify COM wrapper calls
15339         
15340
15341 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15342
15343         * inssel-long32.brg: Fix long->i4 checked conversion.
15344
15345         * exceptions.cs: Add a test for the above.
15346
15347 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15348
15349         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15350
15351         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15352         leaks.
15353
15354         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15355         #78775.
15356
15357 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15358
15359         * mini.c: Fix solaris/x86 exception handling.
15360
15361         * Makefile.am: Get rid of $(ICU_LIBS).
15362
15363 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15366         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15367         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15368
15369         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15370
15371         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15372         this function causes a SIGSEGV.
15373
15374 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15375
15376         * mini.c: Remove unused solaris/x86 includes.
15377
15378 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15379
15380         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15381
15382 2006-06-20  Jb Evain  <jbevain@gmail.com>
15383
15384         * cpu-g4.md: fix max length of start_handler instruction.
15385
15386 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15387         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15388
15389 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15390         * ssa.c: Fixed bug 78653 for SSA based deadce.
15391         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15392         MonoInst.flags, used in SSA based deadce.
15393         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15394         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15395
15396 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15397
15398         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15399         it can end up using non executable memory on ppc64 systems
15400         running ppc32 userspace (fix from Johannes Berg).
15401
15402 2006-06-14  Dick Porter  <dick@ximian.com>
15403
15404         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15405         4.1.1
15406
15407 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15408         * mini.c: Made so that inline is locally disabled if it would
15409         trigger a .cctor, because too many apps depend on this behavior
15410         (which seems to be also the one of the MS CLR).
15411
15412 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15413
15414         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15415         No idea why this worked before.
15416
15417         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15418         which branch to outer exception clauses since they could skip the
15419         inner finally clauses. Fixes #78633.
15420
15421         * exceptions.cs: Add a test for the above.
15422
15423         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15424         Fixes #78629.
15425
15426         * iltests.il: Add a test for the above.
15427
15428 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15431         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15432
15433         * iltests.il: Add a test for the above.
15434
15435 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15438         
15439         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15440         methods as instrinsics.
15441
15442 2006-06-09  Wade Berrier <wberrier@novell.com>
15443
15444         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15445         (simple-cee-ops.h ssapre-mini-ops.h)
15446
15447 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15448
15449         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15450         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15451         instruction).
15452         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15453         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15454
15455 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15456
15457         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15458
15459 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15460
15461         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15462         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15463         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15464         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15465         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15466         of opcodes, so that bug 78549 should not happen again.
15467         * ssapre.c: Updated to use the renamed files.
15468
15469 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15470
15471         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15472         in OP_ATOMIC_EXCHANGE_I4.
15473
15474 2006-06-07  Wade Berrier <wberrier@novell.com>
15475
15476         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15477         in mono_debugger_create_notification_function)
15478
15479 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15480
15481         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15482         
15483         * mini.c (type_from_stack_type): Disable some changes which do not
15484         seem to work.
15485
15486         * driver.c: Reenable opts.
15487
15488         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15489         of the evaluation stack.
15490         
15491         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15492         evaluation stack trace at entry to the bblock.
15493
15494         * mini.c (merge_stacks): New function to perform verification of stack merges.
15495         Turned off by default.
15496
15497         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15498         STACK_MP.
15499         
15500 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15501
15502         * local-propagation.c: Fixed bug 78549.
15503
15504 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15505
15506         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15507
15508 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15509
15510         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15511         tramp-arm.c, tramp-ia64.c
15512         (mono_debugger_create_notification_function): Update signature to
15513         new signature and use new protocol for creating the notification
15514         function.  
15515
15516         Should fix the build.
15517
15518 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15519
15520         * exceptions-ppc.c (mono_jit_walk_stack)
15521         (ves_icall_get_frame_info): Fix the build
15522
15523 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15524
15525         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15526
15527 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15528
15529         * il2tests.2.il: New file for generics CIL tests.  Add test for
15530         #78019.
15531         * Makefile.am: Update.
15532
15533         Fix #78019
15534         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15535         to nullable types.
15536
15537 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15538
15539         * aliasing.c: Fixed bug 78311.
15540
15541 2006-05-29  Martin Baulig  <martin@ximian.com>
15542
15543         * mini-exceptions.c (mono_find_jit_info): When computing the
15544         native offset, check whether we're actually inside the method's
15545         code; call mono_debug_print_stack_frame() to format the frame.
15546         (ves_icall_System_Exception_get_trace): Call
15547         mono_debug_print_stack_frame() to format the stack frame.
15548         (ves_icall_get_trace): Update to the new debugging API.
15549         (mono_jit_walk_stack_from_ctx): Likewise.
15550         (ves_icall_get_frame_info): Likewise.
15551
15552         * mini.c (get_method_from_ip): Use the new debugging API.
15553         (mono_print_method_from_ip): Likewise.
15554
15555         * exceptions-ppc.c
15556         (mono_jit_walk_stack): Use the new debugging API.
15557         (ves_icall_get_frame_info): Likewise.   
15558
15559 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15562
15563 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15564
15565         * mini.c: Added "limitator" to inline for debugging.
15566
15567 2006-05-24  Martin Baulig  <martin@ximian.com>
15568
15569         * debug-debugger.c (mono_debugger_init): Create a private,
15570         malloc()-based code manager for the notification function and
15571         intentionally leak it on exit.  This fixes the crash-on-exit race
15572         condition.
15573
15574         * tramp-amd64.c
15575         (mono_debugger_create_notification_function): Added
15576         `MonoCodeManager *' argument.
15577
15578         * tramp-x86.c
15579         (mono_debugger_create_notification_function): Added
15580         `MonoCodeManager *' argument.
15581
15582 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15583
15584         * aliasing.c: Fixed 64 bit issue.
15585         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15586         default since all known bugs are fixed (one more time!).
15587
15588 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15589
15590         * mini.c: write barrier support.
15591
15592 2006-05-23  Martin Baulig  <martin@ximian.com>
15593
15594         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15595         check at the top of the file.
15596
15597 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15598
15599         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15600         reverting changes without reason and without changelog entries.
15601
15602 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15605         to a few opcodes. Fixes #78439.
15606
15607         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15608         consistency with other archs.
15609
15610         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15611
15612 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15613
15614         * debug-debugger.c: fix the build.
15615
15616 2006-05-17  Martin Baulig  <martin@ximian.com>
15617
15618         * debug-debugger.c
15619         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15620         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15621         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15622         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15623
15624 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15627
15628 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15629
15630         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15631         MONO_TYPE_GENERICINST.
15632         
15633         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15634         MONO_TYPE_GENERICINST.
15635
15636 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15637
15638         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15639         #78325.
15640
15641 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15644         mempool.
15645         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15646
15647 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15648
15649         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15650         mono_trace_cleanup ().
15651
15652         * iltests.il: Fix problem with the newly added test.
15653
15654         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15655         due to register constraints, free up the previous hreg. Fixes #78314.
15656
15657         * iltests.il: Add new test for #78314.  
15658
15659         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15660         Interlocked.Add. Fixes #78312.
15661
15662         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15663         
15664 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15665
15666         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15667
15668 2006-05-05  Martin Baulig  <martin@ximian.com>
15669
15670         * debug-mini.c (mono_debug_open_block): New method.
15671
15672         * mini-amd64.c
15673         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15674         the beginning of each basic block.
15675
15676         * mini-x86.c
15677         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15678         the beginning of each basic block.
15679
15680 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15681
15682         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15683         default until I understand why they break the build on amd64.
15684
15685 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15686
15687         * mini.c (mini_cleanup): Call mono_cleanup ().
15688
15689         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15690         errors.
15691
15692 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15693
15694         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15695         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15696         default since all known bugs are fixed, and I cannot reproduce bug
15697         77944... I'm asking Matt Hargett to test again after this commit.
15698
15699 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15700
15701         * mini-codegen.c: Fixed typo that thrashed inline.
15702
15703 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * dominators.c (compute_dominators): Avoid using a worklist since
15706         it is not correct in some cases. Instead, iterate over all bblocks as
15707         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15708
15709 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15710
15711         * mini.c (mono_jit_compile_method_inner): Use
15712         mono_prepare_exception_from_error that resets the value
15713         internally.
15714
15715 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15716
15717         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15718         
15719 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15720
15721         * aliasing.c: Fixed bug 78210.
15722
15723 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15724
15725         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15726         default until all their problems (or the ones they trigger) are fixed.
15727
15728 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15731         
15732         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15733         as loaded only after resolving patches since that could invoke the same method.
15734
15735         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15736
15737         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15738         functions.
15739
15740         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15741         AOT loader.
15742
15743         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15744         stack.
15745
15746         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15747         made from AOT code through the PLT table.
15748
15749         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15750         holding the plt offset when a call is made to the aot plt trampoline.
15751         
15752 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15755         amd64 AOT support.
15756
15757         * Makefile.am (common_sources): Fix build breakage.
15758
15759         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15760         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15761         intra-assembly calls if possible.
15762         
15763         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15764
15765         * mini-trampolines.c: Handle PLT entries.
15766
15767         * mini.c: Avoid creating a GOT var for calls.
15768
15769         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15770         from mscorlib code.
15771
15772         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15773         from mscorlib code.
15774
15775         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15776         AOT code.       
15777
15778         * mini.h: Bump AOT file format version.
15779         
15780         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15781         covers more cases.
15782
15783 2006-04-25  Martin Baulig  <martin@ximian.com>
15784
15785         * driver.c: Disable copyprop, consprop and inline when running
15786         inside the debugger.
15787
15788 2006-04-25  Martin Baulig  <martin@ximian.com>
15789
15790         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15791         with `get_current_thread' and added `detach'.
15792         (MonoDebuggerMetadataInfo): Added `thread_size',
15793         `thread_tid_offset', `thread_stack_ptr_offset' and
15794         `thread_end_stack_offset'.
15795
15796 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15797
15798         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15799         aot-runtime.c.
15800
15801         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15802         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15803
15804         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15805
15806         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15807
15808         * aot.c: Add support for ADJUSTED_IID.  
15809
15810 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15811
15812         * aot.c (emit_method_order): Don't align method_order_end.
15813
15814         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15815         the interface ID changes.
15816
15817 2006-04-21  Dick Porter  <dick@ximian.com>
15818
15819         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15820         cleaning up a thread.  Fixes the new part of bug 77470.
15821
15822 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15823
15824         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15825         to managed wrapper.
15826                      
15827 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15830         
15831         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15832         SIGSEGV. Fixes #78072.
15833
15834         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15835         unregister our SIGABRT handler.
15836
15837 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15838
15839         * mini.c: Disabled inline where it can alter the call stack in a
15840         way visible from managed code.
15841         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15842         default.
15843
15844 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15847         on other platforms. Fixes #78089.
15848
15849 2006-04-13  Martin Baulig  <martin@ximian.com>
15850
15851         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15852         determine whether we're inside the debugger.
15853
15854         * debug-debugger.h
15855         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15856
15857 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15858
15859         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15860         handler clauses. Fixes #78024.
15861
15862         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15863         in the CALL_MEMBASE opcodes. Fixes #78088.
15864         (mono_arch_get_vcall_slot_addr): Ditto.
15865
15866 2006-04-10  Martin Baulig  <martin@ximian.com>
15867
15868         * debug-debugger.c: The thread handling code has now been moved
15869         into ../metadata/threads.c.
15870
15871 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15872
15873         * driver.c (mono_main): Fix --with-gc=none build.
15874
15875         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15876         (mono_spillvar_offset_float): Ditto.
15877         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15878         hreg, not when its !global, since on ia64, there is a third category: stacked
15879         registers.      
15880
15881 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15882
15883         * mini.c: set MonoInst->klass for load field address and a few other
15884         places.
15885
15886 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15887
15888         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15889
15890 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15891
15892         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15893         the branch opt changes.
15894
15895 2006-04-06  Dick Porter  <dick@ximian.com>
15896
15897         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15898         
15899         * wapihandles.c (mini_wapi_seminfo): 
15900         * driver.c (mono_main): Add semaphore info option
15901
15902 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15905         branch optimization changes. Fixes #78009.
15906
15907 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15908
15909         * mini.c: ignore accessibility of methods in managed->native wrappers.
15910
15911 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15912
15913         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15914         
15915         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15916
15917 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * mini.c: Modify the branch optimizations to preserve the invariant that
15920         the entries inside the in_bb and out_bb arrays are unique.
15921         (mono_unlink_bblock): Avoid creation of new arrays.
15922
15923 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15924
15925         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15926         change (#77992).
15927
15928 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15929
15930         * mini.c (optimize_branches): Remove the "optimizations" in
15931         the cbranch1/cbranch2 -> branch cases which were causing several
15932         problems in the past. Fixes #77986.
15933
15934 2006-03-31  Chris Toshok  <toshok@ximian.com>
15935
15936         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15937         default optimizations :(
15938
15939 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15942         branch.
15943
15944 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15945
15946         * local-propagation.c: Added comments to structs and removed
15947         "Mono" prefixes from local tree mover types.
15948
15949 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15950
15951         * Makefile.am (arch_sources): Define this for each architecture so 
15952         libmono_la_SOURCES is defined in one place.
15953
15954 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15955
15956         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15957         from handles/.
15958
15959 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15960
15961         * driver.c: print the GC name supplied by configure.
15962
15963 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15964
15965         * local-propagation.c: Added tree mover, and moved here all the
15966         local propagation code from mini.c
15967         * mini.c: Added support for treeprop, and moved all the local
15968         propagation code to local-propagation.c
15969         * mini.h: Added support for treeprop
15970         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15971         treeprop, inline and deadce by default
15972         * Makefile.am: Added local-propagation.c
15973
15974 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15977
15978 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15979
15980         * debug-debugger.c: make it compile without the Boehm GC.
15981
15982 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15983
15984         * mini.c: fixed issue with mismatch when an icall is registered
15985         with multiple names but same address.
15986
15987 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15988
15989         * declsec.c, mini-exceptions.c: use write barrier to set reference
15990         fields of managed objects.
15991
15992 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15993
15994         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15995         (can_access_internals): Fix a warning.
15996
15997         * mini.c (print_method_from_ip): Rename this to 
15998         mono_print_method_from_ip so it gets exported.
15999
16000         * trace.c: Deal with strings inside StringBuilder's containing garbage
16001         and fix memory leaks. Fixes #77848.
16002
16003 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16004
16005         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16006         fixes #77787.
16007
16008 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16009         
16010         * mini-s390.c: Remove OP_X86_TEST_NULL.
16011
16012 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16013
16014         * mini.c: use the correct GetHashCode() for the moving collector.
16015
16016 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16017
16018         * liveness.c: Regalloc spill cost tuning.
16019
16020 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16021         
16022         * mini-s390x.h: Correct S390_LONG macro.
16023
16024         * mini-s390x.c: Cleanup unused code.
16025
16026 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16027
16028         * jit-icalls.h: New file.
16029
16030         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16031         icalls and include that instead of including jit-icalls.c.
16032
16033         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16034         OP_X86 opcodes.
16035
16036 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini.c: when checking for member accessibility, also check for
16039         friend assemblies and for explicit interface implementations.
16040
16041 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16044
16045         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16046
16047         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16048         common cases are done first.    
16049
16050         * mini-ops.h: Only define platform specific opcodes on the given platform.
16051
16052         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16053         branch.
16054         
16055 2006-03-14  Martin Baulig  <martin@ximian.com>
16056
16057         Revert Paolo's change from r57348:
16058
16059         * mini.h: don't use gboolean for bitfields.
16060         * mini.c: verifier changes for fields and methods accessibility.
16061
16062 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16063
16064         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16065
16066         * mini-s390x.c: Fix conv_r_un.
16067
16068         * cpu-s390, cpu-s390x.md: Fix lengths.
16069
16070 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16071
16072         * mini.c: nested types have access to all the nesting
16073         levels, not just the enclosing types.
16074
16075 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16076
16077         * mini.c: added a few more verification checks.
16078
16079 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16080
16081         * liveness.c: Merge optimizations from the linear-il branch.
16082
16083 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16084
16085         * mini-ia64.c (emit_call): Add a comment.
16086
16087         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16088
16089         * tramp-ia64.c: Fix some warnings.
16090
16091 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16092
16093         * mini.h: don't use gboolean for bitfields.
16094         * mini.c: verifier changes for fields and methods accessibility.
16095
16096 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16099         lazy icall wrapper changes.
16100
16101         * dominators.c: Replace all the dominator algorithms with faster
16102         ones from the linear-il branch.
16103
16104         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16105         the mempool.
16106
16107         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16108         common cases are done first.
16109
16110         * mini-amd64.c: Fix some warnings.
16111
16112         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16113         from the mempool.
16114
16115         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16116         added code.
16117
16118         * mini.h: Add a missing prototype.
16119
16120 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16121
16122         * mini.c: Compile icall wrappers lazily.
16123
16124         * mini-codegen.c: Use printf instead of g_print since its much faster.
16125
16126         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16127         function.
16128
16129         * mini.c (optimize_branches): Cache the negative result from 
16130         remove_block_if_useless ().
16131
16132         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16133         Also fix some bblock linking issues.
16134
16135         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16136         assembly files.
16137
16138         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16139
16140         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16141         accessed fields first, for better cache behavior.
16142         
16143 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini.c: speedup IList<T> array accesses.
16146
16147 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16148
16149         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16150         inline_costs counter. Fixes #77190.
16151
16152 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16153
16154         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16155         trace messages. Fixes #77706.
16156
16157 2006-03-04  Martin Baulig  <martin@ximian.com>
16158
16159         * tramp-amd64.c, tramp-x86.c
16160         (mono_debugger_create_notification_function): Use
16161         mono_global_codeman_reserve() to allocate a buffer at runtime and
16162         return it.
16163
16164         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16165
16166         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16167         notification function at runtime and then call `initialize' in the
16168         `MONO_DEBUGGER__debugger_info' vtable.
16169
16170 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16171
16172         * iltests.il: Fix a visibility problem.
16173
16174 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16175
16176         * driver.c, mini.c: add hooks for the counters API.
16177
16178 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16179
16180         * driver.c: show disabled options.
16181
16182 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16183
16184         * linear-scan.c: always use cost-driven selection.
16185
16186 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16187
16188         * jit-icalls.c (helper_compile_generic_method): Revert change from
16189         2006-02-24.
16190
16191 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16192
16193         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16194
16195 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16196
16197         * inssel.brg: style fixes, mostly to force the updated monoburg
16198         to run for people using svn.
16199
16200 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16201
16202         * mini.c: match monoburg changes.
16203
16204 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16205
16206         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16207         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16208         declaration in the header file.
16209
16210 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16211
16212         * helpers.c: reduce relocations and mem usage.
16213
16214 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini.h, mini-codegen.c: disable logging features if
16217         requested by configure.
16218
16219 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16220
16221         * mini.c: tiny verifier changes.
16222
16223 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16224
16225         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16226         cpu-pentium.md: stack alignment changes for osx/x86,
16227         partially from Geoff Norton <gnorton@customerdna.com>.
16228
16229 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16230
16231         * jit-icalls.c (helper_compile_generic_method): Update to changes
16232         in metadata/class.c.
16233
16234 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16235         
16236         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16237         
16238         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16239         interface calls with large offsets.
16240
16241 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16242
16243         * jit-icalls.c (helper_compile_generic_method): Document the
16244         special-case we depend on so that we can inflate the method twice
16245         with the same context with no bad side-effects.
16246
16247 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16248
16249         * mini-x86.c, mini-amd64.c: fix for case when xen support
16250         is disabled.
16251
16252 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16253
16254         * mini-x86.c, mini-amd64.c: generate code to access tls items
16255         in a faster way for Xen systems.
16256
16257 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16258
16259         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16260         updates and compilation fixes for the OSX/x86 port, mostly from
16261         Geoff Norton <gnorton@customerdna.com>.
16262
16263 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16264
16265         * inssel.brg: faster interface call implementation
16266         to sync with the interface_offsets MonoVTable changes.
16267
16268 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16269
16270         * mini.c: more verification checks.
16271
16272 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16273
16274         * mini.c: added a few more verification checks.
16275
16276 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16277
16278         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16279         facility on the processor and use it if available.
16280
16281 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16282
16283         * driver.c, aot.c, mini.c: throw exception if the IL code is
16284         invalid or unverifiable.
16285
16286 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16287
16288         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16289         m.StructField.
16290
16291 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16292
16293         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16294
16295 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16296
16297         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16298         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16299         handling of instantiated generic valuetypes.
16300
16301 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16302
16303         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16304         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16305         instead.
16306
16307         * generics.2.cs: Revert the nullable reftypes tests.
16308
16309 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16310
16311         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16312         using __builtin_frame_address (1) as it doesn't work in the presence
16313         of optimizations. Hopefully fixes #77273.
16314
16315         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16316         -> generics.cs change as it doesn't work with some automake versions.
16317
16318 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16319
16320         * mini.c: handle systems that sue a different way to
16321         retrieve the stack address of the current thread.
16322
16323 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16324
16325         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16326         it specially in the makefile.
16327
16328         * generics.2.cs: Add tests for nullable reference types.
16329
16330 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16331
16332         * mini.c: always handle the case when mono_jit_init()
16333         is called in a thread different from the main thread,
16334         confusing libgc (bug #77309).
16335
16336 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16337
16338         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16339
16340 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16341
16342         * mini.c: change optimize_branches () to use a single loop
16343         and introduce a new optimization to simplify some range checks.
16344
16345 2006-02-03  Martin Baulig  <martin@ximian.com>
16346
16347         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16348         and merged with debugger_thread_manager_add_thread().
16349         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16350         inform the debugger about the main thread.
16351
16352 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16353
16354         * basic.cs: Add test for div.un/rem.un constant folding.
16355
16356 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16357
16358         * cpu-s390x.md: correct int_xor_imm length
16359
16360 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16361
16362         * generics.2.cs: New test for #77442.
16363
16364         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16365         #77442.
16366
16367 2006-02-02  Martin Baulig  <martin@ximian.com>
16368
16369         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16370         <mono/metadata/mono-debug-debugger.h>   
16371
16372         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16373
16374 2006-02-02  Martin Baulig  <martin@ximian.com>
16375
16376         * debug-debugger.h: New header file for debug-debugger.c.
16377
16378         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16379         function is a separate thread anymore; add support for attaching.
16380
16381 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16382
16383         * tramp-x86.c: Fix a warning.
16384
16385 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16386
16387         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16388         on very large methods.
16389
16390         * aot.c (load_patch_info): Fix a warning.
16391
16392 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16395         mini-ops.h: alu membase optimizations.
16396
16397 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16398
16399         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16400         to speedup StringBuilder.
16401
16402 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16403
16404         * dominators.c (mono_compute_natural_loops): Fix detection of
16405         loop body start blocks.
16406
16407         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16408
16409 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16410
16411         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16412         #75145.
16413
16414 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16415
16416         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16417
16418 2006-01-25  Martin Baulig  <martin@ximian.com>
16419
16420         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16421         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16422         started to cleanup this file a little bit.
16423
16424 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16425
16426         * mini.c: optimize a codepath frequently happening in generics code.
16427
16428 2006-01-23  Martin Baulig  <martin@ximian.com>
16429
16430         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16431
16432         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16433         functions directly.
16434
16435         * driver.c: debug-debugger.c is only available if
16436         `MONO_DEBUGGER_SUPPORTED' is defined.   
16437
16438 2006-01-23  Martin Baulig  <martin@ximian.com>
16439
16440         * debug-debugger.c: Only enable this on platforms where the Mono
16441         Debugger is working (x86 and x86_64).
16442
16443 2006-01-21  Martin Baulig  <martin@ximian.com>
16444
16445         The Mono Debugger is now using the normal `mono' instead of the
16446         `mono-debugger-mini-wrapper' when executing managed code.
16447
16448         * debug-debugger.c: New file; previously known as
16449         debugger/wrapper/wrapper.c.
16450
16451         * debug-mini.c (mono_init_debugger): Removed.
16452
16453         * driver.c (mono_main): Added new `--inside-mdb' command line
16454         argument which is used when running inside the debugger.
16455
16456 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16457
16458         * liveness.c (mono_analyze_liveness): Remove some unused data
16459         structures.
16460
16461 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16462
16463         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16464
16465 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16466
16467         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16468         depends on implementation details of monobitset.
16469
16470         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16471         Fixes #77271.
16472
16473 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16474
16475         * liveness.c: Update after monobitset changes.
16476
16477 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16478
16479         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16480
16481 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16482
16483         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16484
16485         * mini-s390x.c: Remove warning messages.
16486
16487 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16488
16489         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16490
16491 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16492
16493         * generics.2.cs: Add ldelem/stelem_any test.
16494
16495 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16496
16497         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16498
16499 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16500
16501         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16502         
16503 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16504
16505         * generics.2.cs: Reenable vtype tests.
16506
16507         * inssel-x86.brg: Remove an icorrect valuetype rule.
16508
16509 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16510
16511         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16512         initial support for OP_ABS.
16513
16514 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16515
16516         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16517
16518 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16519
16520         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16521         conversion and implement LADD/LSUB.
16522
16523         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16524         architectures.
16525
16526 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16527
16528         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16529
16530         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16531         architectures.
16532
16533 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16534
16535         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16536         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16537         (stack walk problem).
16538
16539 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16540
16541         * aot.c (mono_aot_load_method): Fix a warning.
16542
16543 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16544
16545         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16546
16547 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16548
16549         * iltests.il: Add test for #77148.
16550
16551         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16552         #77148.
16553
16554 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16555
16556         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16557
16558 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16559
16560         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16561         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16562
16563         * basic-long.cs: Add lconv-to-r4/r8 tests.
16564
16565 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16566
16567         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16568
16569         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16570         here as on other archs.
16571
16572 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16573
16574         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16575
16576 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16577
16578         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16579         
16580         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16581
16582         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16583         instrument_prolog; Add memory_barrier instruction.
16584
16585 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16586
16587         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16588
16589 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16590
16591         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16592
16593         * aliasing.c inssel.brg: Fix warnings.
16594
16595         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16596         could skip initialization of some parts of memory.
16597
16598         * mini.c mini-ia64.c: Fix warnings.
16599
16600         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16601
16602 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16603
16604         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16605         a crash seen on sparc.
16606
16607         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16608         
16609         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16610
16611 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16612
16613         * mini-ops.h: Add s390_backchain instruction
16614
16615         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16616
16617         * cpu-s390.md: Add s390_backchain instruction
16618
16619         * mini-s390.c: Significant ABI changes
16620
16621         * mini-s390.h: Cater for zero length structures
16622
16623 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16624
16625         * mini-s390.c: ABI fixes
16626
16627         * inssel-s390.brg: Remove debug statements
16628
16629         * cpu-s390.md: Fix length of ATOMIC_xx operations
16630
16631 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16632
16633         * basic-float.cs: Add float<->long conversion tests.
16634
16635 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16636
16637         * mini-s390.c: Fix LOCALLOC processing.
16638
16639         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16640
16641 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16642
16643         * iltests.il: Add tests for some opcodes not covered by the other
16644         tests.
16645
16646 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16647
16648         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16649         register loading for Tail processing; Correct trace output.
16650
16651         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16652
16653         * cpu-s390.md: Correct size of jmp instruction. 
16654
16655 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16656
16657         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16658
16659 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16660
16661         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16662           Bring s390 up to current level.
16663
16664 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16665
16666         * generics.2.cs: Disable the newly added tests as they do not work yet.
16667         
16668         * generics.2.cs: Add valuetype tests.
16669
16670 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16671
16672         * basic-long.cs: Add i4->u8 test.
16673
16674         * objects.cs: Add tests for JIT intrinsic.
16675
16676         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16677         optimizations lost by a mistake.
16678
16679 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * basic-long.cs: Remove a test moved to objects.cs.
16682
16683         * arrays.cs: Add more array tests.
16684
16685 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16686
16687         * arrays.cs: Add new tests for multi-dimensional arrays.
16688
16689 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16690
16691         * Makefile.am (test_sources2): Add generics.2.cs.
16692         (EXTRA_DIST): Add test_sources2.
16693
16694 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16695
16696         Support for boxing and unboxing nullable types as well as the
16697         isinst operation on nullables, per the CLI ammendment.
16698
16699         * inssel.brg (CEE_ISINST): Special case for nullable
16700
16701         * mini.c (handle_unbox_nullable): new method
16702         (handle_box): Special case for nullable types
16703         (mono_method_to_ir): Call handle_unbox_nullable in correct
16704         places.
16705
16706         * generics.2.cs: New test suite
16707
16708         * Makefile.am: Support for regression tests with generics.
16709
16710 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16711
16712         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16713         allocated to registers. Fixes #76800.
16714
16715 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16716
16717         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16718
16719 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16720
16721         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16722         of platforms.
16723
16724 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16727         objects.cs.
16728
16729         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16730         
16731         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16732 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16733
16734         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16735         single precision before storing to a single precision location.
16736
16737 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16738
16739         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16740
16741 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16744         correct files.
16745
16746         * basic.cs: Remove test_0_byte_compares test which was moved to
16747         objects.cs a long time ago.
16748
16749 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16750
16751         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16752
16753 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16754
16755         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16756         handlers are called.
16757
16758         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16759         throwing code.
16760
16761          * mini-ia64.c: Add support for the throw->branch exception 
16762         optimization.   
16763
16764         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16765
16766 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16767
16768         * mini.c: Enabled "fastpath" deadce :-)
16769         
16770 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16771
16772         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16773         alias analysis pass to support it.
16774         * mini.h: Likewise.
16775         * ssa.c: Likewise.
16776         * liveness.c: Likewise (liveness computation can use aliasing
16777         information to be more accurate).
16778         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16779         moreover made so that "--compile-all" uses the given optimization
16780         flags and not the default ones.
16781         * aliasing.c: Alias analysis (new file).
16782         * aliasing.h: Likewise.
16783         * Makefile.am: added "aliasing.c" and "aliasing.h".
16784         
16785 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16786
16787         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16788         OP_L opcodes.
16789
16790 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16791
16792         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16793         fp >= end_of_stack exit condition, as it is not needed, and it might
16794         become true for fp eliminated frames.
16795
16796 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16797
16798         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16799         coded offsets.
16800
16801 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16802
16803         * mini-arm.c: fixed alignment of doubles/longs to match
16804         the C ABI (bug #76635).
16805
16806 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16807
16808         * aot.c: fix compilation with --enable-minimal=aot.
16809
16810 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16811
16812         * mini-arm.c: fixed compatibility with the new
16813         floating point emulator package for compares.
16814
16815 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16816
16817         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16818
16819 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * mini-exceptions.c (print_stack_frame): Output to stderr.
16822         (mono_handle_native_sigsegv): Ditto.
16823
16824 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16827         OP_LCONV_TO_OVF_I implementation.
16828
16829         * mini-amd64.c: Add support for the throw->branch exception 
16830         optimization.
16831
16832         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16833         when the catch clause catches a more general exception, i.e. Object.
16834
16835 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * cpu-ia64.md: Remove unused opcodes.
16838
16839         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16840         specific defines for architectures defining USE_SIGACTION.
16841
16842         * mini-ia64.c: Fix some warnings.
16843
16844         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16845         version seemed to skip a frame.
16846
16847 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16848
16849         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16850         only calls which are made to native code use this flag.
16851
16852 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16853
16854         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16855         varargs methods as well.
16856         
16857         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16858         which have save_lmf set. Reorganize methods prologs a bit.
16859
16860         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16861         debugger to the proper place.
16862
16863 2005-10-29  Martin Baulig  <martin@ximian.com>
16864
16865         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16866         when running inside the debugger until the debugger has support
16867         for it.
16868
16869 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16870
16871         * mini.h: Fix a warning.
16872
16873 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16874
16875         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16876         we expose publicly, this returns the string.
16877
16878 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16879
16880         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16881         with fp elimination.
16882
16883 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16884
16885         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16886         native stacktrace using the glibc 'backtrace' function if available.
16887
16888 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16889
16890         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16891
16892         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16893         handle SIGSEGVs received while in native code.
16894
16895         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16896         code, call mono_handle_native_sigsegv which will abort the runtime
16897         after printing some diagnostics, instead of converting it into a
16898         confusing NullReferenceException.
16899
16900 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * cpu-pentium.md: Remove unused opcodes.
16903
16904 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16905
16906         * mini-amd64.h (MonoLMF): Add rsp field.
16907
16908         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16909         the lmf too.
16910
16911 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16912
16913         * mini-codegen.c (get_register_spilling): Fix some warnings.
16914
16915 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16916
16917         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16918         elimination during exception handling. Enable fp elimination by
16919         default.
16920
16921         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16922         elimination.
16923
16924 2005-10-16  Martin Baulig  <martin@ximian.com>
16925
16926         * mini-exceptions.c
16927         (mono_debugger_run_finally): New public method for the debugger.
16928
16929 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16930
16931         * debug-mini.c (mono_debug_init_method): Fix warning.
16932
16933         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16934         the 'exname' parameter const to fix some warnings.
16935
16936 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16937
16938         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16939         introduced by the previous patch.
16940
16941 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * basic-float.cs: Add test for precision of float arithmetic.
16944
16945         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16946         when loading/storing single values from/to memory.
16947
16948         * mini.c (mono_jit_compile_method_with_opt): Create the function
16949         pointers in the correct domain.
16950
16951 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16952
16953         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16954         introduced by previous patch.
16955         
16956         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16957         when out_filter_idx is NULL.
16958
16959         * mini-exceptions.c: Don't run filter clauses twice during exception
16960         handling. Fixes #75755.
16961
16962 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * aot.c: Add support for ldflda wrappers.
16965
16966         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16967         #75902.
16968
16969 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16970
16971         * mini.c, mini.h: do not consider exception handlers blocks when
16972         setting up interface variables.
16973
16974 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16975
16976         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16977
16978 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16979
16980         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16981         causes a regression.
16982
16983         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16984
16985 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16988         of the OP_P definitions.
16989
16990         * TODO: Add a proposal for dealing with the CEE/OP mess.
16991
16992         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16993         optimizations from the x86 port.
16994
16995         * cpu-amd64.md: Ditto.
16996
16997         * basic.cs basic-long.cs: Add tests.
16998
16999 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17000
17001         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17002         Patrik Torstensson's implementation of my exception-handling
17003         optimization idea, when the exception object is not used
17004         (bug #62150).
17005
17006 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17007
17008         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17009         of the mul_imm optimizations from the old jit.
17010
17011 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17012
17013         * mini.c, liveness.c: patch by Patrik Torstensson and
17014         Zoltan Varga to improve performance in methods with
17015         exception clauses.
17016
17017 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17018
17019         * driver.c: Remove 'Globalization' entry from --version.
17020
17021 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17022
17023         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17024         there is a profiler interested in JIT events.
17025
17026         * aot.c: Load profile files produced by the AOT profiling module, and
17027         reorder methods based on the profiling info. Add a 'method_order' table
17028         to the AOT file to make mono_aot_find_jit_info work with the reordered
17029         methods.
17030
17031         * mini.h: Bump AOT file version info.
17032
17033 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17034
17035         * mini-arm.h: work around what looks like a gcc bug when optimizations
17036         are enabled.
17037
17038 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17039
17040         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17041         conditionals.  Use ...
17042         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17043
17044 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17045
17046         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17047         to determine the amount of memory to copy when passing valuetypes.
17048
17049         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17050         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17051
17052 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17053
17054         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17055         information about aot.
17056
17057 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17058
17059         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17060         macros. This will allow a deadlock debugger to easily be plugged
17061         in.
17062
17063 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17064
17065         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17066
17067 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17068
17069         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17070         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17071         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17072         ($(arch_built)) [CROSS_COMPILING]: Error out.
17073
17074 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * aot.c: Add support for the no_special_static flag for classes.
17077
17078 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17079
17080         * Reapply reverted patches.
17081
17082         * *: Revert r50174 as well.
17083
17084         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17085
17086 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17087
17088         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17089
17090 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17091
17092         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17093         part of the SIG_HANDLER_SIGNATURE.  
17094
17095 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17096
17097         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17098         statistics.
17099
17100         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17101         introduced by previous patch.
17102
17103 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17104
17105         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17106         saved registers too.
17107
17108         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17109         upon the information returned by get_call_info ().
17110         
17111         * mini-x86.c (add_float): Fix stack size calculation.
17112         (mono_arch_call_opcode): Rewrite this so it works based up the
17113         information returned by get_call_info ().
17114         (mono_arch_get_this_vret_args): Ditto.
17115
17116 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17117
17118         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17119         in cinfo to determine the registers which need to be used.
17120
17121 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17122
17123         * driver.c (mono_main): Add --server and --desktop flags. 
17124
17125 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17126
17127         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17128         registers as global registers.
17129
17130         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17131         longer needed with the new register allocator.
17132
17133         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17134
17135         * cpu-ia64.md: Remove unused opcodes.
17136         
17137         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17138         
17139 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * cpu-amd64.md: Remove unused opcodes.
17142
17143         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17144         needed with the new register allocator.
17145
17146         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17147         reg-reg moves.
17148
17149 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17150
17151         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17152
17153 2005-09-16  Martin Baulig  <martin@ximian.com>
17154
17155         * exceptions-amd64.c
17156         (throw_exception): Don't call mono_debugger_throw_exception() if
17157         we're a rethrow - see the FIXME in the code.
17158
17159 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17160
17161         * mini.c (mono_init_exceptions): This only works on some architectures.
17162         
17163 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17164
17165         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17166         on ia64.
17167
17168         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17169
17170         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17171         now in mini-exceptions.c.
17172
17173 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17174
17175         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17176         now in mini-exceptions.c.
17177
17178 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17181         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17182
17183         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17184         code into mini-exceptions.c. Add some assertions to it.
17185
17186 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17187
17188         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17189         (<software@solmersa.com>). Fix as errors on windows.
17190
17191 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17192
17193         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17194         method info into the LMF.
17195
17196 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17197         
17198         * mini-ia64.c: Add proper unwind info for method epilogs.
17199
17200         * exceptions-ia64.c: Add some code to help debugging.
17201         
17202         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17203
17204         * mini-exceptions.c: Fix warning.
17205
17206 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17207
17208         * mini.c: Really fix build.
17209
17210         * mini-x86.c mini-amd64.c: Fix build.
17211
17212 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17213
17214         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17215
17216         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17217         some Interlocked methods as intrinsics.
17218
17219         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17220         for Thread methods as well.
17221
17222         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17223
17224         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17225
17226         * mini-ia64.c mini-x86.c mini-amd64.c 
17227         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17228         OP_MEMORY_BARRIER.
17229         
17230         * mini.c (mono_init_exceptions): Fix build breakage.
17231
17232 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17233
17234         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17235         of instructions. Use the new ia64_unw_op macros for emitting unwind
17236         info.
17237
17238         * mini.c (mono_init_exceptions): Initialize exception handling
17239         related trampolines at startup.
17240
17241 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17242
17243         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17244
17245 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17246
17247         * mini.c: Handle type loading errors gracefully during compilation and
17248         throw the appropriate exception.
17249
17250 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17251
17252         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17253         for the mono binary.
17254
17255 2005-09-09  Martin Baulig  <martin@ximian.com>
17256
17257         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17258         the release.
17259
17260 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17261
17262         * mini-arm.h: use emulation for conv.r.un for the release.
17263
17264 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17265
17266         * mini-arm.c, objects.cs: more fixes and tests for them.
17267
17268 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17269
17270         * mini-arm.c: align structures to at least 4 bytes to be able
17271         to keep our current optimized memcpy.
17272
17273 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17274
17275         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17276
17277 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17278
17279         * mini.c: ignore SIGPIPE.
17280
17281 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17284
17285         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17286
17287 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17288
17289         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17290
17291 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17292
17293         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17294         exception handling support.
17295         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17296         patch by Brian Koropoff <briank@marakicorp.com>).
17297
17298 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17299
17300         * mini.c: revert another 'optimization' which breaks when
17301         items on the eval stack need to be saved at a basic block end
17302         (bug #75940).
17303
17304 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17305
17306         * jit-icalls.c: for arrays, ensure we always provide
17307         lower bounds.
17308
17309 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17310
17311         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17312         
17313         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17314
17315 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17316
17317         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17318         arguments in their original register.
17319
17320 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17321
17322         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17323         memset/memcpy.
17324
17325         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17326         when ssapre is enabled.
17327
17328         * inssel-long.brg: Fix bug in previous patch.
17329
17330         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17331         multiplication by a constant.
17332
17333 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17334
17335         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17336         icc.
17337
17338         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17339         saving registers.
17340
17341 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17342
17343         * inssel-arm.brg: apply changes tested by Brian Koropoff
17344         <briank@marakicorp.com>.
17345
17346 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17347
17348         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17349         
17350 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17351
17352         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17353         to the same register if dreg is just a base register.
17354         (print_ins): Improve printing of membase opcodes.
17355
17356         * inssel-x86.brg: Add optimized ldind(reg) rules.
17357
17358         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17359
17360 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17361
17362         * mini.c: when running under valgrind, set the stack bottom for
17363         the GC at the actual approximate stack for the app (fixes running
17364         mono with valgrind).
17365
17366 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17367
17368         * mini.c: do no break at the first valuetype to init found
17369         (fixes bug #75791).
17370
17371 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17372
17373         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17374
17375 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17376
17377         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17378
17379 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17380
17381         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17382
17383 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17384
17385         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17386
17387         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17388         code.
17389
17390         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17391         code.
17392
17393         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17394         methods.
17395
17396 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17397
17398         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17399
17400 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17401
17402         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17403         in the tail recursion optimization.
17404
17405         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17406         debug info into the assembly file.
17407
17408         * iltests.il: Add test for filter regions.
17409
17410         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17411         initial stack of filter regions. Fixes #75755.
17412
17413 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17414
17415         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17416         stack requirements.
17417
17418 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17421         the check for an already compiled method on non-ia64 platforms.
17422         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17423         proper domain.
17424
17425         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17426
17427         * inssel-x86.brg: Add some optimized call rules.
17428
17429 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17430
17431         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17432         method here.
17433
17434         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17435         mono_arch_patch_delegate_trampoline.
17436
17437         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17438
17439         * mini-trampolines.c: Fix build.
17440
17441         * mini-amd64.h: Add delegate trampolines.
17442
17443         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17444
17445         * inssel-amd64.brg: Add optimized call rules.
17446         
17447         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17448
17449         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17450
17451 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17452
17453         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17454         change.
17455
17456         * mini-ia64.c: Remove LMF fixmes.
17457
17458         * mini-ia64.h: Remove most fields from LMF.
17459
17460         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17461
17462         * mini-trampolines.c: Add support for IA64 function descriptors.
17463
17464         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17465         for IA64 function descriptors.
17466
17467 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17468
17469         * tramp-arm.c: patch the vtable for virtual calls. Added
17470         support code to register/unregister the LMF.
17471         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17472         more LMF work.
17473
17474 2005-08-19  Dick Porter  <dick@ximian.com>
17475
17476         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17477         bit value if needed.
17478
17479 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17480
17481         * mini.c (mini_get_method): Move handling of wrapper data here.
17482
17483         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17484
17485         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17486         virtual.
17487
17488         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17489         bblock->code does not remain empty.
17490
17491 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17492
17493         * arrays.cs: Add regression test for #75832.
17494
17495         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17496         rules. Fixes #75832.
17497
17498         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17499         instruction scheduling.
17500
17501 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17504
17505 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17506
17507         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17508
17509         * mini-codegen.c: Fix VC build.
17510
17511         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17512
17513 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17514
17515         * mini.h: fix signature for mono_register_opcode_emulation.
17516
17517 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * mini.c: Get rid of most of the helper_sig_... constants using
17520         mono_create_icall_signature ().
17521
17522 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17523
17524         * jit-icalls.c (helper_ldstr): New helper function.
17525
17526         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17527
17528         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17529         throw, load the string using a helper call instead of creating a string object.
17530
17531         * aot.c: Update after LDSTR changes.
17532
17533         * mini.h: Bump AOT file version.
17534         
17535         * aot.c: Save class size info into the AOT file. Print more statistics during
17536         compilation.
17537
17538         * mini.h: Bump AOT file version.
17539
17540         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17541         ordering of disasm cases. Fixes #74957.
17542
17543 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17544
17545         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17546         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17547         the generic code needed for the ARM port.
17548
17549 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17550
17551         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17552         inssel-arm.brg: more ARM features and fixes.
17553
17554 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17555
17556         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17557         ARM port work in progress.
17558
17559 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17560
17561         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17562
17563         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17564
17565         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17566
17567         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17568
17569         * *-ia64.*: Ongoing IA64 work.
17570         
17571         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17572
17573 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * TODO: Remove out-of-data todo stuff.
17576
17577         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17578         dead code.
17579
17580         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17581
17582         * mini.h: Bump corlib version.
17583
17584 2005-07-27  Martin Baulig  <martin@ximian.com>
17585
17586         * mini-codegen.c
17587         (create_copy_ins): Added `const unsigned char *ip' argument; set
17588         `copy->cil_code' from it.
17589
17590 2005-07-27  Martin Baulig  <martin@ximian.com>
17591
17592         * mini-exceptions.c (mono_handle_exception): Don't call
17593         mono_debugger_handle_exception() for filters.
17594
17595 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17596
17597         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17598         as well.
17599
17600 2005-07-26  Martin Baulig  <martin@ximian.com>
17601
17602         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17603
17604         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17605         helper_compile_generic_method() if the method is actually virtual
17606         and non-final.
17607
17608 2005-07-26  Martin Baulig  <martin@ximian.com>
17609
17610         * mini.c
17611         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17612         public; this is now accessed directly by the debugger.
17613         (mono_generic_trampoline_code): Removed.
17614
17615         * debug-mini.c
17616         (mono_debug_init_method): Also add interncalls and wrappers.
17617
17618 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17619
17620         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17621
17622 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17623
17624         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17625
17626 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17627
17628         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17629
17630 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17631
17632         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17633         getting TLS offsets on AMD64 too.
17634
17635 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17636
17637         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17638
17639 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17640
17641         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17642         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17643
17644 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17645
17646         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17647
17648         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17649         to mini.c.
17650
17651         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17652         mono_sparc_is_virtual_call ().
17653         
17654         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17655
17656         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17657         trampoline parameters.
17658
17659         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17660         
17661         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17662         to mono_arch_get_vcall_slot_addr.
17663
17664         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17665         trampoline code.
17666
17667         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17668
17669 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17670
17671         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17672
17673 2005-07-19  Martin Baulig  <martin@ximian.com>
17674
17675         * exceptions-amd64.c (throw_exception): Call
17676         mono_debugger_throw_exception() here like we're doing it on i386.
17677
17678 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * mini-ia64.c: Add optimized TLS access support.
17681
17682 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17683
17684         * mini-exceptions.c: Ongoing IA64 work.
17685
17686         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17687
17688         * mini.c: Use the default optimization set when embedding. Fixes
17689         #75194.
17690
17691 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17692
17693         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17694         of trampolines to a separate file.
17695
17696         * mini-trampolines.c: New file.
17697
17698         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17699         separate file.
17700         
17701         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17702         amd64/ia64 code.
17703
17704         * mini-codegen.c: Fix cygwin build.
17705
17706 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * mini.c: Add some minor changes needed by the IA64 port.
17709
17710         * *-ia64.*: Ongoing IA64 work.
17711
17712 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17715         trampolines into arch-independent and arch-dependent parts.
17716
17717         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17718
17719 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17720
17721         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17722
17723         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17724         the xp-regalloc-branch for amd64.
17725
17726         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17727         xp-regalloc-branch for x86.
17728
17729 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17730
17731         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17732
17733 2005-07-06  Martin Baulig  <martin@ximian.com>
17734
17735         * mini.c
17736         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17737         (mono_jit_runtime_invoke): Likewise.
17738
17739 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17740
17741         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17742         on x86 too.
17743         
17744         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17745         without loading their metadata. Reorganize the file format so exception handling+
17746         debug info is kept separate from normal method info. Create MonoJitInfo 
17747         structures for methods lazily.
17748
17749         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17750         loading metadata.
17751         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17752
17753         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17754
17755         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17756         in AOT code.
17757
17758         * mini.h: Bump AOT file version.
17759
17760 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17763
17764 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17765
17766         * Makefile.am (check-local): Call semdel-wrapper.
17767
17768 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17769
17770         * mini-x86.c: Revert the last change as it seems to break the build..
17771
17772 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17775         
17776         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17777
17778 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17779
17780         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17781         outside of the macro, so strange stuff doesn't happen with gcc4
17782         (NEW_AOTCONST_TOKEN): Likewise.
17783
17784 2005-06-28  Martin Baulig  <martin@ximian.com>
17785
17786         * mini.c (mini_class_is_system_array): New static method; use this
17787         instead of `klass->parent == mono_defaults.array_class' everywhere
17788         since this also works for the new generic array class.
17789
17790 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17791
17792         * inssel.brg: Remove warnings.
17793
17794 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * mini-ia64.c: Ongoing IA64 work.
17797
17798         * basic-float.cs: Add float->i1 conversion test.
17799
17800         * iltests.il: Add conv.u4 test.
17801
17802 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17803
17804         * inssel-long.brg: Fix bug caused by last change.
17805
17806 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17807
17808         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17809         BSDs.  Allows the x86 JIT to work on OSX86
17810
17811 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17812
17813         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17814         u4->i8 conversion.
17815
17816         * mini-ia64.c: Ongoing IA64 work.
17817
17818 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * mini-ia64.c: Ongoing IA64 work.
17821
17822         * driver.c: Clean up jit_code_hash as well when using --regression.
17823
17824         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17825
17826         * basic-long.cs: Add tests for long->u4 conversion.
17827
17828 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17829
17830         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17831         that we do not depend on undefined C behavior: the order stuff
17832         gets evaluated within an expression. Fixes mono when compiled on
17833         GCC 4.
17834
17835 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17836
17837         * *-ia64.*: Ongoing IA64 work.
17838
17839         * aot.c: Lower memory usage while loading AOT methods.
17840
17841         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17842
17843         * mini.h: Bump AOT file format version.
17844
17845 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17846
17847         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17848
17849 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17850
17851         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17852         not on callee assembly). Fixed some comments.
17853
17854 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17855
17856         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17857         it gets proper disassembly.
17858         (emit_method_info): Remove some dead code.
17859
17860         * mini.c (mini_method_compile): Allways allocate the GOT var in
17861         mono_method_to_ir for emulating opcodes.
17862
17863 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17864
17865         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17866         before freeing the code memory. Fixes #74990.
17867
17868         * objects.cs: Add regression test for #74992.
17869
17870         * liveness.c: Extend live ranges of arguments to the beginning of the
17871         method. Fixes #74992.
17872
17873         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17874         so it points into the faulting instruction.
17875
17876 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17879
17880         * *-ia64.*: Ongoing IA64 work.
17881
17882         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17883
17884 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17885
17886         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17887
17888         * *-ia64.*: Ongoing IA64 work.
17889
17890 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * basic-long.cs: Add tests for add/sub.ovf.
17893
17894         * basic.cs: Add tests for sub.ovf.
17895
17896         * *-ia64.*: Ongoing IA64 work.
17897
17898 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17899
17900         * *-ia64.*: Ongoing IA64 work.
17901
17902         * basic.cs: Add conv.ovf.i4.un test.
17903
17904 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17905
17906         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17907         
17908 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17909
17910         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17911
17912 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * *-ia64.*: Ongoing IA64 work.
17915
17916 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17917
17918         * trace.[ch]:
17919         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17920
17921 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17922
17923         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17924
17925 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17926
17927         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17928
17929         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17930         of a call is callable by a near call.
17931
17932 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * mini-ia64.c: Ongoing IA64 work.
17935
17936 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17937
17938         * genmdesc.c: Make the generated array non-static.
17939
17940         * inssel-long.brg: Fix LSHR_IMM rule.
17941
17942         * *-ia64.*: Ongoing IA64 work.
17943
17944         * *-ia64.*: Ongoing IA64 work.
17945
17946 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17947
17948         * *-ia64.*: Ongoing IA64 work.
17949
17950         * *-ia64.*: Ongoing IA64 work.
17951         
17952         * mini-ia64.c: Ongoing IA64 work.
17953
17954         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17955
17956 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17957
17958         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17959         
17960         * objects.cs basic-long.cs: Move some tests to objects.cs.
17961
17962 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * *-ia64.*: Ongoing IA64 work.
17965
17966         * iltests.il: Add a new test.
17967
17968         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17969         newobj. Fixes #75042.
17970
17971 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17972
17973         * *-ia64.*: Ongoing IA64 work.
17974         
17975         * *-ia64.*: Ongoing IA64 work.
17976         
17977         * *-ia64.*: Ongoing IA64 work.
17978
17979         * basic.cs objects.cs: Move tests accessing static variables as well.
17980
17981         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17982
17983 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17984
17985         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17986
17987         * driver.c: Always print failed tests.
17988
17989         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17990         frame pointer.
17991
17992         * *ia64*: Ongoing IA64 work.
17993
17994 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17995
17996         * basic.cs: Add tests for add.ovf. Fix warnings.
17997
17998 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17999
18000         * driver.c (mono_main): Avoid crash if no argument is passed to
18001         --break;  Do not use g_error, but f_printf.   And fix all other
18002         ocurrences of the same crash.
18003
18004 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18007         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18008         Fixes #74742.
18009
18010 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * *-ia64.*: Add beginnings of IA64 backend.
18013
18014         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18015
18016 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18017
18018         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18019         Fixes #74925.
18020
18021         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18022
18023         * mini-amd64.c: Fix a warning.
18024
18025 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18026
18027         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18028         in float_neg. Fixes #74897.
18029
18030         * mini-amd64.c (emit_call): Fix another near call bug.
18031
18032 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18033
18034         * declsec.c: Keep the appdomain information in the structure. Added a 
18035         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18036         value gets overwritten).
18037         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18038         an MonoAppDomain member to MonoSecurityFrame.
18039         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18040         used in the stack walk. Now use a MonoArray which grow (double) when
18041         it gets full.
18042
18043 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18044
18045         * mini.c: Re-enabled runtime cleanup, since running threads should
18046         now properly stop when exiting.
18047
18048 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18049
18050         * mini-codegen.c: New file contaning the arch-independent local
18051         register allocator. Not used by any architectures yet.
18052
18053         * mini.h linear-scan.c: Merge some changes from the 
18054         mini-xp-local-regalloc branch.
18055
18056 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18057
18058         * mini-amd64.c (emit_call): Fix calls to native functions when the
18059         runtime is compiled as a shared library. Fixes #74756.
18060
18061         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18062         on a literal field. Fixes #74751.
18063
18064 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18065
18066         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18067
18068 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18069
18070         * objects.cs: Add missing null casting test.
18071
18072 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18073
18074         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18075         in wrapper methods. Also rename 'address' variable to 'offset'.
18076
18077 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18078
18079         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18080         warnings.
18081         
18082         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18083
18084         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18085         work on windows.
18086
18087 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18088
18089         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18090
18091 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18092
18093         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18094         just the last bytes.
18095
18096 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18097
18098         * aot.c (mono_compile_assembly): Fix warning.
18099
18100         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18101         by the _MSC_VER stuff.
18102
18103 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18104
18105         * inssel-long.brg: Fix #74588.
18106
18107         * cpu-amd64.md: Fix #74591.
18108
18109         * iltests.il: Add new regression tests.
18110
18111 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18112
18113         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18114         valuetype.
18115
18116 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18117
18118         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18119
18120         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18121         from Bill Middleton <flashdict@gmail.com>.
18122
18123 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18124
18125         * arrays.cs: Add new regression test. Fix warnings.
18126
18127 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18130         and leakage in CKFINITE.
18131
18132         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18133         this to a null op since it is called on amd64 too.
18134
18135         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18136
18137         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18138         body since this is not used on amd64.
18139         
18140         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18141
18142         * mini-amd64.c: Remove obsolete fixmes.
18143
18144         * mini.c (print_method_from_ip): Fix debugging support.
18145
18146 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18147
18148         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18149         so that expressions that don't give much gain are not reduced.
18150         * ssapre.h: Likewise.
18151
18152 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18155
18156         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18157
18158         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18159
18160 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18161
18162         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18163
18164         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18165
18166 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18169         stack touching.
18170
18171         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18172
18173         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18174
18175         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18176
18177         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18178         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18179
18180         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18181
18182         * mini-x86.c: Fix up stack overflow handling.   
18183
18184         * exceptions.cs: Add new regression test.
18185
18186 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18187
18188         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18189         mono_jit_thread_attach.
18190
18191         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18192
18193 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18194
18195         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18196         avoid calling constructors using callvirt.
18197
18198         * inssel.brg: Fix #74073.
18199
18200 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18201
18202         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18203         compilation with non-GCC compilers.
18204         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18205         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18206
18207 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18208
18209         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18210         klass->interface_offsets (will likely fix bug#74073).
18211
18212 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18213
18214         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18215
18216 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18219         to amd64_div_reg_size ().
18220         
18221         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18222
18223 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18224
18225         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18226
18227 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18228
18229         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18230
18231 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18232
18233         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18234         
18235         * mini.c (mono_precompile_assembly): Load and precompile referenced
18236         assemblies as well. Fixes #74015.
18237
18238 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18241
18242 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18243
18244         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18245         a lot of checks and (anyway) permissions cannot work until corlib is 
18246         loaded.
18247
18248 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18249
18250         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18251
18252 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18253
18254         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18255         calls (fixes bug#72824).
18256
18257 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18258
18259         * mini.c: fix tail recursion elimination (see test in bug#73936).
18260
18261 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18262
18263         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18264         some fp functions in sse2 mode.
18265
18266 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18267
18268         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18269
18270 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18271
18272         * mini.h mini.c: Add mono_get_jit_tls_key ().
18273
18274         * mini-x86.c: Enable fast TLS support on windows.
18275
18276 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18277
18278         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18279         * mini.c: Check for p/invoke method when generating code. If a
18280         p/invoke method, or it's class, isn't decorated with [Suppress
18281         UnmanagedCodeSecurity] then generate code to call System.Security.
18282         UnmanagedDemand (only if the security manager is active).
18283
18284 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18287         last change as it seems to cause strange crashes.
18288         
18289 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18290
18291         * *.c: handle unsafe function pointers where needed.
18292
18293 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18294
18295         * mini.c (mono_jit_free_method): Remove the fixme too.
18296
18297 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18298
18299         * mini.c: As discussed, make the code actually free the delegate
18300         thunk now, to enable the debugging of delegate problems, use
18301         MONO_DEBUG=1 when running Mono. 
18302
18303         This takes also care of parts of the leaks as seen by Joe.
18304
18305 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18306
18307         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18308         thread_tls_offset calculation.
18309
18310 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18311
18312         * declsec.c: Reworked linkdemand checks for icall. The previous code
18313         was using the declaration code (untrusted) and didn't work as expected
18314         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18315         specific case.
18316
18317 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * iltests.il: Add new localloc test.
18320
18321         * mini-amd64.c: Handle large stack allocations the same way as on
18322         windows if stack overflow handling is working.
18323         
18324         * mini-amd64.c: Allocate the signal stack using mmap.
18325
18326         * mini.c (sigsegv_signal_handler): Fix reading of context.
18327
18328         * mini-exceptions.c: Fix up stack overflow handling.
18329
18330         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18331
18332         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18333
18334         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18335
18336         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18337
18338         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18339         tramp_init functions as they are no longer needed.
18340
18341 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18342
18343         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18344         
18345         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18346
18347         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18348         
18349         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18350         support that now.
18351
18352         * mini-ops.h: Add OP_LMUL_IMM.
18353
18354         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18355         long mul/div opcodes as intrinsic.
18356
18357         * mini-amd64.c (emit_call): Handle the case when the callee might be
18358         an AOT method.
18359
18360 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18361
18362         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18363         extra safe.
18364         
18365         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18366
18367         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18368
18369 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18370
18371         * mini.c (mono_codegen): Don't leak here, to help people running
18372         monogrind.
18373
18374 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18377         conversions in sse2 mode.
18378
18379         * basic-float.cs: Add regression test.
18380         
18381         * mini-amd64.c: Reenable sse2.
18382
18383 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18384
18385         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18386
18387 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18388
18389         * driver.c: Copyright text should include 2005.
18390         
18391 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18392
18393         * cpu-amd64.md (load_membase): Fix more max lengths.
18394
18395 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18396
18397         * cpu-amd64.md (load_membase): Fix max length.
18398
18399         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18400
18401         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18402
18403         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18404         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18405
18406         * basic-float.cs: Add rounding regression test.
18407
18408         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18409
18410 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18411
18412         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18413         structures in registers for pinvoke wrappers.
18414
18415 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18416
18417         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18418
18419 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18420
18421         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18422         wrapper to mono_jit_thread_attach.
18423
18424         * mini.c (mini_jit_thread_attach): New jit icall.
18425
18426         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18427         native->managed wrappers.
18428
18429         * exceptions.cs: Add new regression test.
18430
18431         * mini.c (optimize_branches): Check regions in the cbranch to throw
18432         block case as well. Fixes #73242.
18433
18434 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18435
18436         * mini.c: thread safety fixes.
18437
18438 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18441         patching stuff, since delegates use jump trampolines so there is
18442         no caller.
18443
18444         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18445         jump trampolines.
18446         
18447         * tramp-amd64.c: Fix build.
18448
18449         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18450         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18451
18452         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18453         Rename this to mono_arch....
18454         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18455
18456         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18457
18458         * mini-amd64.c (emit_call): If both the caller and the callee is
18459         guaranteed to have 32 bit addresses, emit a normal call.
18460
18461         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18462
18463         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18464         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18465         method_ptr inside delegates.
18466
18467 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18468
18469         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18470         invalidated. Fixes #73001.
18471
18472         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18473
18474         * mini-x86.c: Only use stdcall for pinvokes on windows.
18475
18476 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18477
18478         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18479         * mini-x86.c: remove unreliable __thread var offset detection,
18480         use the correct accessors and enable by default.
18481
18482 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * mini.c (mono_jit_free_method): Fix memory leak.
18485
18486 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18489
18490 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18491
18492         * cpu-amd64.md: Fix lengths of atomic opcodes.
18493
18494 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18495
18496         * driver.c: try to not imply using ICU is any good.
18497
18498 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18499
18500         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18501         functions as inline ops.
18502
18503         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18504         some Interlocked functions as inline ops.
18505
18506         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18507
18508         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18509
18510         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18511
18512         * mini.c: Add support for OP_NOT_TAKEN.
18513
18514         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18515         structures in registers for pinvoke wrappers.
18516
18517         * mini-amd64.c: Fix warnings.
18518
18519 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18520
18521         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18522
18523         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18524
18525         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18526         address instead of loading the address from it.
18527
18528         * mini-x86.c: Add support for returning small structs in registers
18529         on Win32. Fixes part of #70864.
18530         
18531 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * trace.c (get_token): Improve error checking.
18534
18535 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18538
18539 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18540  
18541         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18542         it can be reused for MonoClass.
18543         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18544         _LINKDEMAND.
18545
18546 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18547
18548         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18549         instead of a MonoReflectionMethod. The method information wasn't used
18550         when displaying SecurityException details (but will be now).
18551
18552 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18553
18554         * Makefile.am : windows build fix.
18555
18556 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * iltests.il: Add new regression test.
18559
18560         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18561         #72522.
18562
18563 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18564  
18565         * mini.c: Moved linkdemand check into helper function check_linkdemand
18566         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18567         LDFTN, LDVIRTFTN).
18568
18569 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18570
18571         * declsec.c: Added statistics counter for different kinds of 
18572         LinkDemands.
18573         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18574         (and commented) declaration.
18575         * mini.c: Added statistics counter for security Demand code 
18576         generation. Added display of security statistics.
18577
18578 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18581         Fix compilation errors under gcc-2.95.
18582
18583 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18584
18585         * mini.c, driver.c: Use the new jit trampoline hashtable
18586
18587 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18588
18589         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18590
18591 2005-02-11  Martin Baulig  <martin@ximian.com>
18592
18593         * debug-mini.c (mono_debug_close_method): Free the line number array.
18594
18595 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18596
18597         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18598         icalls.
18599
18600         * mini.h: Bump AOT file format version. 
18601
18602 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18603
18604         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18605         APTC and P/Invoke.
18606         * declsec.h: Added macros to get/set lazyly initialized security 
18607         informations about assemblies. Added new enum for different type of
18608         possible LinkDemand violation. Added function to check LinkDemands.
18609         * mini.h: Added a field to MonoCompile to hold any security violation
18610         detected when JITting a method (so it can be thrown later).
18611         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18612         and CEE_CALLVIRT. Added code to throw exception at the end of
18613         mini_method_compile (note: the exception is unhandled right now).
18614
18615 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18616
18617         * mini.c, jit-icalls.c: use the managed implementation of
18618         memset for initobj and memset, to avoid managed <-> unmanaged
18619         transitions.
18620
18621 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18624         optimization if it would need a GOT var.
18625
18626         * basic.cs: Add tests for constant propagation and switch statements.
18627
18628         * ssa.c: Fix out-of-range constant propagation and switch statements.
18629
18630 2005-02-09    <vargaz@freemail.hu>
18631
18632         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18633
18634 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18635
18636         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18637
18638 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18639
18640         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18641
18642 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18643
18644         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18645         arithmetic operations.
18646
18647 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18648
18649         * mini-ppc.c: add a workaround for broken user code that
18650         DllImports vararg functions with non-vararg signatures.
18651
18652 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18653
18654         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18655         meaningfull error message for assemblies written in Managed C++.
18656
18657         * tramp-amd64.c mini-amd64.h: Add support for 
18658         create_trampoline_from_token ().
18659
18660         * aot.c mini-x86.c abcremoval.c: Applied patch from
18661         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18662
18663 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18666         which takes a MonoImage/token as parameter instead of a MonoMethod.
18667
18668         * aot.c: Use the new trampoline for initializing vtables.
18669
18670         * aot.c: Add support for ldfld/stfld_remote wrappers.
18671
18672         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18673         rules for compare <MEM>, IMM.
18674
18675         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18676
18677         * aot.c: Handle inherited finalizers correctly.
18678
18679 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * inssel.brg (stmt): Add a missing _setup_... ().
18682
18683         * aot.c: Save some parts of the class state to the AOT file and use it
18684         to recompute that state when a class is initialized.
18685
18686         * mini.c: Install AOT hooks into the runtime.
18687
18688         * mini.h: Bump AOT file format version.
18689         
18690         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18691         Fixes #72148.
18692
18693         * iltests.il: Add new test.
18694
18695 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18696
18697         * mini.c: fix typo.
18698
18699 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18700
18701         * mini.c: setup the statistical profiler in the thread attach
18702         callback to cope with the new single thread code.
18703
18704 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini-ppc.c: ensure we have enough room for the profiler
18707         calls (fixed bug#72084).
18708
18709 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18710
18711         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18712         it.
18713
18714 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18715
18716         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18717
18718 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18719
18720         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18721         to succesfully execute parrotbench).
18722         * ssapre.h: Likewise.
18723
18724 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18725
18726         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18727         variable for stores to method arguments (fixes a SSAPRE issue).
18728
18729 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18730
18731         * mini.c: handle value types in dup, fixes gen-112.cs.
18732
18733 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18734
18735         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18736         sequence for calls in dynamic methods to avoid thunks.
18737
18738 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18739
18740         * mini.c: correctly remove dynamic methods from the hashtable.
18741
18742 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18743
18744         * driver.c: Disabled SSAPRE until fix the bug that appears
18745         in IronPython's parrotbench.
18746
18747 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18750
18751         * mini.c (mono_method_to_ir): Revert the previous change.
18752         
18753         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18754         when AOT compiling.
18755
18756         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18757         mono_jit_info_table_find () etc. when running under valgrind.
18758
18759         * inssel.brg: Fix warnings.
18760
18761         * mini-exceptions.c: Fix warnings.
18762
18763 2005-01-31  Martin Baulig  <martin@ximian.com>
18764
18765         * driver.c (compile_all_methods_thread_main): Don't try to compile
18766         generic methods or anything which has type parameters.
18767
18768 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18769
18770         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18771
18772         * TestDriver.cs: Add --verbose flags.
18773
18774         * graph.c ssa.c: Fix 64 bit warnings.
18775         
18776         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18777         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18778         Fix 64 bit warnings.
18779
18780         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18781         variable not spotted by gcc.
18782         
18783         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18784         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18785         X86_COMPARE_MEMBASE opcodes.
18786
18787         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18788
18789 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18790
18791         * *: MonoMethod->signature might be NULL now. You *MUST* use
18792         mono_method_signature.
18793
18794 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18795
18796         * driver.c (compile_all_methods_thread_main): Compile the methods
18797         without invoking cctors.
18798
18799 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18800
18801         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18802         * basic-calls.cs: test for the above.
18803
18804 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18805
18806         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18807         MonoJitInfo changes.
18808
18809 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18812         eagerly if it contains dynamic methods.
18813         
18814         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18815
18816         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18817         trace, it is now computed by an icall from trace_ips.
18818         
18819         * mini-exceptions.c: Fix a warning.
18820
18821 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18822
18823         * mini-exceptions.c: don't bother getting stack trace info if
18824         it's not going to be used.
18825
18826 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18827
18828         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18829         ssapre-mini-ops.h.
18830
18831 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18834
18835         * aot.c: Avoid calling mono_method_get_header () if not needed.
18836
18837         * mini.h: Bump AOT file format version.
18838         
18839         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18840
18841         * mini.c (mono_print_tree): Print more info for calls.
18842
18843 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18844
18845         * declsec.h: Remove warning by adding missing include for marshal.h
18846
18847 2005-01-26  Martin Baulig  <martin@ximian.com>
18848
18849         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18850         `ip' twice.
18851
18852 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18855         flags.
18856
18857         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18858
18859         * aot.c (mono_compile_assembly): Fix a warning.
18860
18861 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18862
18863         * declsec.c: Look for security attributes on the original MonoMethod 
18864         (and not the wrapped one). This fix permissions on icalls.
18865
18866 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18869
18870         * mini.c (mono_allocate_stack_slots): Add a fixme.
18871
18872         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18873
18874 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18875
18876         * inssel.brg: optimize casts of sealed types (more
18877         optimizations waiting for fixes in remoting).
18878
18879 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * inssel.brg (stmt): Add another dummy rule.
18882
18883         * driver.c: Fix warnings.
18884
18885         * driver.c (mono_main): If running under valgrind, instruct glib to use
18886         the system allocation functions so valgrind can track the memory
18887         allocated by the g_... functions.
18888
18889         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18890
18891         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18892
18893         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18894
18895         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18896         variables in try regions.
18897
18898         * mini.c (mini_method_compile): Don't disable optimizations on large
18899         methods when AOT compiling.
18900
18901         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18902         allocate stack slots. Not yet used.
18903
18904 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18905
18906         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18907
18908 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18909
18910         * mini-ppc.c: make the branch info relative as the code
18911         buffer can be reallocated.
18912
18913 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18914
18915         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18916         * driver.c: Removed the AOT/security restriction. Now initialize the
18917         security manager (in metadata) if --security is used.
18918         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18919         rather than the pointer to declarative security, when AOT is used.
18920
18921 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18922
18923         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18924         basic blocks, reduced intrinsic exception throwing code size.
18925
18926 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18927
18928         * driver.c (mini_usage): Reorder the usage screen.
18929
18930 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18931
18932         * mini.c (mono_resolve_patch_target): Fix warning.
18933
18934 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18937         previous patch.
18938
18939         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18940
18941         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18942         breaks the amd64 build.
18943
18944         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18945         register allocation. Fixes #71454.
18946
18947         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18948
18949         * arrays.cs: Add new regression test.   
18950
18951 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18952
18953         * ssapre.c: Turned usage of snprintf to GString.
18954         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18955         (I left it on by mistake in my previous commit).
18956
18957 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18958
18959         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18960         on cond branch optimization (fixes bug# 71515).
18961
18962 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18963
18964         * abcremoval.c: Fixed bug 71062.
18965         * abcremoval.h: Likewise.
18966
18967 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18968
18969         * mini.c: Added a new functionality to optimize_branches, the removal
18970         of useless basic blocks, and fixed some problem in the removal of
18971         critical edges; some utility functions added for both purposes.
18972         * ssapre.c: Added complex expression support, and fixed bug 70637.
18973         * ssapre.h: Likewise.
18974         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18975         enabled in SSAPRE.
18976         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18977         * driver.c: Re-enabled SSAPRE.
18978
18979 2005-01-19  Martin Baulig  <martin@ximian.com>
18980
18981         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18982         the result of mono_get_method_constrained().
18983
18984 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18985
18986         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18987         manager.
18988
18989 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18990
18991         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18992         be detected.  Fixes #59296.
18993
18994 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18997         which can happen. Fixes #71361.
18998
18999 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19002         manager.
19003
19004 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19007         appdomain-unload.exe to fail.
19008         
19009         * mini.c: Fix some memory leaks.
19010
19011 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19012
19013         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19014         Fixed bug and sped up some codepaths.
19015
19016 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19017
19018         * mini.c: Fix some memory leaks.
19019
19020         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19021         conversion.
19022
19023         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19024
19025         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19026         #71320.
19027
19028         * iltests.il: Add regression test for #71320.
19029
19030 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * mini.c (mono_codegen): Fix installation of profiler hooks.
19033
19034         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19035
19036 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19037
19038         * mini.h, mini.c, cfold.c: optimize access to enum
19039         readonly fields, too. Eval conditional branches if possible
19040         to perform unreachable code removal in more cases.
19041
19042 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19045
19046         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19047         code manager.
19048
19049         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19050         WinXP DEP. Fixes #71244.
19051
19052 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19053
19054         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19055
19056 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19057
19058         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19059
19060 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19061
19062         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19063         changes.
19064
19065         * mini.h: Bump AOT version.
19066
19067         * mini.h (MonoCompile): Change exvar to a hash table.
19068
19069         * mini.c: Allocate a separate exvar for each handler block.
19070
19071         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19072
19073         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19074         ex var with the pending exception and only throw if the two are equal.
19075         Fixes #68552.
19076         
19077         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19078
19079         * mini-x86.c: Fix warnings.
19080
19081         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19082         used by all the ports now.
19083
19084         * aot.c: Add write-symbols and save-temps options.
19085
19086 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19089
19090 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19091
19092         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19093         operations.
19094
19095         * tramp-s390.c: Check vtable slot belongs to the domain.
19096
19097         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19098         as per other platforms.
19099
19100         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19101
19102 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19103
19104         * driver.c: we don't run the Main() code in a subthread anymore.
19105
19106 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19107
19108         * mini.c: added experimental rtc support in the statistical
19109         profiler: if the user has the permission, more accurate statistics
19110         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19111         The MONO_RTC value must be restricted to what the linux rtc allows:
19112         power of two from 64 to 8192 Hz.
19113
19114 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19117
19118 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19119
19120         * mini-ppc.c: better icache flush for smp.
19121
19122 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19123
19124         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19125
19126         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19127         amd64 port, not yet used.
19128
19129 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19130
19131         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19132         a struct type.
19133
19134 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19135
19136         * driver.c: Added --security option to activate the security manager.
19137         Right now this will allow code generation for declarative demands and
19138         is disabled when AOT is specified.
19139         * mini.c: Add code generation for declarative security demands.
19140         * mini.h: Add mono_use_security_manager as an extern gboolean.
19141
19142 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19143
19144         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19145         emitting more dense assembly code.
19146
19147         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19148         exception throwing stuff.
19149
19150 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19151
19152         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19153         dead code.
19154
19155         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19156         left in by mistake.
19157
19158         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19159         fixed.
19160
19161         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19162
19163         * tramp-*.c: Only patch vtable slots if the object is in the current
19164         domain. Fixes appdomain-unload.exe.
19165
19166         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19167         
19168         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19169         x86 branch.
19170
19171 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * mini.c (reverse_branch_op): New helper function.
19174
19175         * mini.c (optimize_branches): Run the new optimization only on 
19176         platforms which support it. Also reverse all kinds of branches.
19177
19178         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19179
19180         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19181         a throw statement.
19182
19183         * mini.c (optimize_branches): Reverse not-equals branches if the false
19184         bblock is a throw. This happens a lot of time with argument checking in
19185         corlib.
19186
19187         * mini.c (mono_codegen): Add support for placing basic blocks after
19188         the function epilogue.
19189
19190         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19191         function epilogue.
19192         
19193 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19194
19195         * mini.c (setup_stat_profiler): Only set this up if the platform
19196         supports ITIMER_PROF.
19197
19198 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19201         previous patch.
19202
19203         * inssel.brg: Fix a warning.
19204
19205 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19206
19207         * mini.c: added support for statistical profiler 
19208         (run with: --profile=default:stat).
19209
19210 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19213
19214         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19215
19216         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19217         related to global registers from the amd64 port.
19218
19219 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19222
19223         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19224         with global registers.
19225         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19226
19227         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19228
19229 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19230
19231         * debug-mini.c (encode_value): Fix off-by-one.
19232
19233         * aot.c (encode_value): Likewise.
19234
19235         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19236
19237 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19240         AOT.
19241
19242         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19243         
19244         * aot.c (emit_method_info): Increase size of temp buffer.
19245
19246         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19247         the AOT case.
19248
19249 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19250
19251         * aot.c (emit_method_info): Fix build.
19252         
19253         * aot.c: Further rework of the AOT file format to reduce the size of
19254         the method info data.
19255
19256         * mini.h: Bump AOT file format version.
19257
19258 2004-12-27  Martin Baulig  <martin@ximian.com>
19259
19260         * mini.c (mini_get_method): New static method; call
19261         mono_get_method_full() and mono_get_inflated_method().
19262         (mono_method_to_ir): Use mini_get_method() instead of
19263         mono_get_method_full(). 
19264
19265 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19266
19267         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19268
19269 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19272
19273         * inssel-amd64.brg: Add some optimization rules.
19274
19275 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19276
19277         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19278         standard not GC'd stuff is fine.
19279
19280 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * aot.c: Rework the AOT file format to get rid of most of the global
19283         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19284
19285         * mini.h: Bump AOT file format version.
19286         
19287 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * mini.h: Bump AOT file format version.
19290
19291         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19292         address is inside a GOT.
19293
19294         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19295
19296         * cpu-pentium.md: Increase the maximum size of some instructions which
19297         might involve a got access.
19298         
19299         * mini.c (get_method_from_ip): Another debug helper function.
19300
19301         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19302         when got var accesses are created during the decompose phase.
19303
19304         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19305
19306         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19307         argument mini_compile_method and to MonoCompile, and use this to
19308         determine whenever a given method is compiled for AOT. This allows the
19309         other methods compiled during AOT compilation to be free of AOT stuff,
19310         so the backends does not need to add special support for them by
19311         creating a fake GOT etc.
19312
19313         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19314         longer needed.
19315
19316 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19317
19318         * mini.c (mono_method_to_ir): It turns out that some of the
19319         x-appdomain wrappers are lax with types, so just ignore this for
19320         all wrappers.
19321
19322         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19323         at the vtable->klass. If it is non-shared code we can just use the
19324         vtable.
19325
19326 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19327
19328         * mini-ppc.c: access MonoDomain from tls, too.
19329
19330 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19331
19332         * declsec.c: Removed unused variable (and related warning ;-)
19333
19334 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19335
19336         * iltests.il: New test for LDELEMA on an array of ref types.
19337
19338         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19339         all ldelema's on reftypes.
19340         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19341         it was the wrong place to put it.
19342
19343         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19344         register to pop to make this cleaner, at the request of Paolo.
19345
19346 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19347
19348         * mini-ops.h (OP_GETHASHCODE): New op.
19349
19350         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19351
19352         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19353         operation.
19354
19355         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19356         by 25%.
19357         
19358         * mini-x86.c (mono_arch_output_basic_block): Rather than
19359
19360         add ebp, 4
19361
19362         Emit
19363
19364         pop edx
19365
19366         The first is 3 bytes while the second is 1. This saves 36 kb on
19367         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19368         see a small boost because of icache locality.
19369
19370         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19371
19372 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19373
19374         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19375         started code sharing with the generic code.
19376
19377 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19378
19379         * mini-ppc.c, cpu-g4.md: added code for direct access to
19380         tls data slots.
19381
19382 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19383
19384         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19385          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19386         to OP_TLS_GET.
19387
19388 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19389
19390         * declsec.c|h: Added functions to cache the declarative stack modifiers
19391         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19392         structure.
19393         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19394         created. Register internal calls for System.Security.SecurityFrame::
19395         _GetSecurityFrame and _GetSecurityStack.
19396         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19397         the definitions for the new stack walk/callback mechanism.
19398         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19399         first security frame for LinkDemands and InheritanceDemands) and
19400         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19401         from lupus.
19402         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19403         walk initialization (lupus).
19404
19405 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19406
19407         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19408         idiom.
19409         (handle_loaded_temps): Do not create a temporary variable for
19410         things that we know are temps. They will never be modified.
19411         (mono_spill_call): Set MONO_INST_IS_TEMP
19412         (mono_emulate_opcode): ditto
19413         (emit_tree): ditto
19414         (mono_method_to_ir.CEE_DUP): ditto
19415
19416 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19417
19418         * mini.c (type_to_eval_stack_type): Make this handle the void type
19419         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19420         (emit_tree): use ip_in_bb to special case some common idioms
19421         Update all callers to pass in the IP.
19422         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19423
19424         This gives us a nice 2% speedup in mcs bootstrap.
19425
19426         * mini-x86.c (peephole_pass): Peephole pass to make
19427         mov  [foo], eax
19428         push [foo]
19429
19430         into
19431
19432         mov [foo], eax
19433         push eax
19434
19435         * mini.c (ip_in_bb): new method.
19436         (mono_method_to_ir): use this method rather than doing the hash
19437         lookup ourselves.
19438
19439         * linear-scan.c (mono_linear_scan): When expiring actives, you
19440         don't need to keep around variables that expire on this
19441         instruction. This makes it so that:
19442              a = b + 1
19443         will turn into:
19444              store (ebx add (ebx, 1))
19445         which will become
19446              add ebx, 1
19447
19448 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19451         combination to avoid doing two copies. Fix up problems with previous
19452         patch.
19453
19454         * mini.c: Fix 64 bit warnings.
19455
19456         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19457
19458 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19461         changes from the x86 code.
19462
19463         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19464
19465 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19468         throwing code to reduce its size, unify the AOT and non-aot code and 
19469         get rid of relocations in the AOT case.
19470
19471         * mini-x86.h mini.c exceptions-x86.c 
19472         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19473         raise corlib exceptions which doesn't require relocations in the 
19474         caller.
19475
19476         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19477
19478 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19479
19480         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19481         needed.
19482
19483         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19484         in the AOT case.
19485
19486 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19487
19488         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19489         with add function when used from Inc/dec atomic 
19490         functions. Re-enabled optimization on x86.
19491         * mini-ops.h: renamed atomic_add functions to
19492         allow _add to match the Interlocked::Add and
19493         _add_next to match Interlocked::Inc/Dec.
19494
19495 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19496
19497         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19498         linking of BBs to the end BB, and enabled SSAPRE also with
19499         consprop and copyprop (which was prevented by that bug).
19500
19501 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19502
19503         * mini-x86.c: disabling the Interlocked optimizing code. 
19504
19505 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19508         file version check.
19509         
19510 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19511
19512         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19513         interlocked optimization due lack of support on x86, rewrote 
19514         exchange to take into account that base may be in eax.
19515         
19516         xsp works again; activated Interlocked optimizing code.
19517         
19518 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19519
19520         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19521
19522 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * mini-ops.h: Add new opcodes.
19525
19526         * mini.h: Add new patch types. Add got_var to MonoCompile.
19527
19528         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19529         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19530         make it work with all kinds of patchable code.
19531
19532         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19533         address of the GOT, and referencing entries in the GOT.
19534
19535         * mini.c: Add code to load the GOT address if needed by an opcode.
19536
19537         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19538         independent AOT code on the x86 using an elf-style Global Offset Table.
19539
19540 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19541
19542         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19543
19544 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19545
19546         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19547         when running xsp.
19548
19549 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19550
19551         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19552         of Interlocked:Increment/Decrement/Add as inline ops.
19553         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19554
19555 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19556
19557         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19558         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19559
19560 2004-12-12  Duncan Mak  <duncan@ximian.com>
19561
19562         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19563         again. `patch_info->table_size' is no longer valid after Zoltan's
19564         commit #37636.
19565
19566 2004-12-12  Martin Baulig  <martin@ximian.com>
19567
19568         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19569         if we are the "real" method, ie. not an inlined method inside it.
19570
19571 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19572
19573         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19574         before we look in the special fields table. This fixes
19575         ../tests/thread-static-init.cs.
19576
19577 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19578
19579         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19580         for Array get_Rank and get_Length. Fixes bug #70465.
19581
19582 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19585         separate structure to reduce the size of MonoJumpInfo.
19586
19587 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19588
19589         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19590
19591 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19592
19593         * mini.c (mini_get_inst_for_method): Changed to allow ports
19594         to return a MonoInst instead of opcode 
19595         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19596         
19597         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19598         Allow ports to return a created MonoInst instead of op-code, will enable
19599         new optimizations.
19600         (renamed mini_get_opcode_for_method to better reflected the functionality)
19601
19602 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19605
19606 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19609         Fixes #69985.
19610
19611 2004-12-08  Martin Baulig  <martin@ximian.com>
19612
19613         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19614         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19615
19616 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19619         correctly.
19620
19621         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19622         arithmetic.
19623
19624 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19625
19626         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19627
19628 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19631         bug introduced by the previous patch.
19632
19633 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19634
19635         * mini-ppc.c, objectc.cs: handle large structs passed by value
19636         (fixes bug #69972).
19637
19638 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19639
19640         * mini-ppc.c: OP_ARGLIST implementation from
19641         Geoff Norton  <gnorton@customerdna.com>.
19642
19643 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19644
19645         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19646         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19647
19648 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19649
19650         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19651
19652 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19653
19654         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19655         support.
19656
19657 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19658
19659         * mini-sparc.c: Zero out localled-ed memory.
19660
19661         * iltests.il: Add tests for zeroing out localloc-ed memory.
19662
19663 2004-12-04  Martin Baulig  <martin@ximian.com>
19664
19665         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19666         mono_method_get_signature_full().       
19667
19668 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19669
19670         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19671         and some utility functions (always for SSAPRE), integrated SSAPRE.
19672         * mini.h: Likewise.
19673         * driver.c: Added ssapre option.
19674         * ssa.c: Small fix on OP_ARG handling.
19675         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19676         * Makefile.am: Likewise.
19677
19678 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19681         now in the xp code.
19682
19683         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19684         icall.
19685
19686 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19687
19688         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19689         
19690         * cpu-s390.md : Increase instruction length of oparglist.
19691
19692         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19693
19694 2004-11-30  Martin Baulig  <martin@ximian.com>
19695
19696         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19697         virtual generic methods.  We call a special helper_compile_generic_method()
19698         icall to retrieve the method from the vtable, inflate and compile
19699         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19700
19701         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19702
19703 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19704
19705         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19706
19707 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19708
19709         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19710         Fixes #69929.
19711
19712 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19713
19714         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19715         platforms with PIC aot.
19716
19717 2004-11-28  Martin Baulig  <martin@ximian.com>
19718
19719         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19720         Fixes gen-112.cs.
19721
19722 2004-11-28  Martin Baulig  <martin@ximian.com>
19723
19724         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19725         the result of mono_type_get_underlying_type() to check whether
19726         we're byref.
19727
19728 2004-11-26  Martin Baulig  <martin@ximian.com>
19729
19730         * mini.c
19731         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19732         in the g_assert().
19733
19734 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19737         the same way as the other arguments so they won't get clobbered.
19738
19739         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19740         calls through R11 since it is clobbered by the trampoline code.
19741
19742 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19743
19744         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19745         pick up in-tree mscorlib.dll.
19746
19747 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19750
19751         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19752         runtime data/code are now stored in a table similar to the GOT in ELF. 
19753         This allows the code itself to be position independent.
19754
19755         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19756         loading changes.
19757
19758         * aot.c: Attach ELF type (object/function) directives to all global
19759         symbols.
19760
19761         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19762
19763         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19764
19765         * mini-amd64.h: Turn on PIC AOT code.
19766
19767         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19768         returning the offset within an OP_AOTCONST instruction where the GOT
19769         offset needs to be added.
19770
19771         * mini.h: Bump AOT file format version.
19772
19773 2004-11-25  Martin Baulig  <martin@ximian.com>
19774
19775         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19776         uninflated generic methods.
19777
19778 2004-11-25  Martin Baulig  <martin@ximian.com>
19779
19780         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19781
19782 2004-11-24  Martin Baulig  <martin@ximian.com>
19783
19784         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19785         original klass (this only applies for generic instances).
19786
19787 2004-11-24  Martin Baulig  <martin@ximian.com>
19788
19789         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19790         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19791         that array).
19792
19793 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19796         localloc. Fixes #69678.
19797
19798         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19799         
19800 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19801
19802         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19803         used SSE registers on pinvoke calls. Fixes #69774.
19804
19805 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19806
19807         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19808         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19809
19810 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19811
19812         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19813         Refer directly to the mcs/ tree.
19814
19815 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19816
19817         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19818         Check if a trampoline for a synchronized method is required. 
19819
19820 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19821
19822         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19823         with localloc if needed. Throe arithmetric exception in
19824         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19825         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19826
19827 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19828
19829         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19830         types before switching on type.  Fixes #69622.
19831
19832 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19833
19834         * Makefile.am (check-local): New.  Integrate into 'make check'.
19835         (MCS,RUNTIME): Define using in-tree mono and mcs.
19836         (ILASM): New.
19837         (%.exe): Use $(ILASM).
19838
19839 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19840
19841         * mini-ppc.c: adjust initial prolog size (bug #69691).
19842
19843 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19844
19845         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19846         #69664.
19847
19848 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19849
19850         * Makefile.am (clean-local): Rename from 'clean'.
19851
19852 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19853
19854         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19855         to mono_arch_is_int_overflow. 
19856         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19857         SIGFPE events.
19858
19859 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19860
19861         * declsec.c|h: New files to support declarative security attributes.
19862         Added function to check if a method has (applicable) security.
19863         * mini.c|h: Add check for declarative security attributes in
19864         mono_method_check_inlining.
19865         * Makefile.am: Added declsec.c and declsec.h to the build.
19866
19867 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19868
19869         * mini.c, mini.h: update to keep dynamic code info per-domain.
19870
19871 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19874         (mini_init): Get rid of it from here too.
19875
19876 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19877
19878         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19879         implemented OP_RETHROW (patch by Geoff Norton
19880         <gnorton@customerdna.com>).
19881
19882 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19883
19884         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19885         between appdomains.  Fixes appdomain-unload on PPC.
19886
19887 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19888
19889         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19890         mini-exceptions.c: handle the new wrapper types.
19891         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19892         token value as a MonoClass* when compiling a wrapper.
19893         mono_jit_create_remoting_trampoline now takes an additional
19894         MonoRemotingTarget parameter.
19895         
19896 2004-11-10  Martin Baulig  <martin@localhost>
19897
19898         * mini.c (mono_method_to_ir): Use `generic_container->context'
19899         rather than creating a new one.
19900
19901 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19902
19903         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19904
19905         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19906
19907 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19910         the experimental aot cache stuff.
19911
19912 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19913
19914         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19915         mini-exceptions.c: update to exception clause structure changes.
19916
19917 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * exceptions-x86.c (throw_exception): Fix warnings.
19920
19921         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19922         for OP_RETHROW.
19923
19924 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * exceptions-sparc.c (get_throw_exception): Really fix this.
19927
19928 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19929
19930         * tramp-*.c: we no longer support icalls without wrappers, so
19931         a bit of code can be removed here
19932
19933 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19934
19935         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19936         patch.
19937
19938         * cpu-sparc.md: Add op_rethrow.
19939
19940         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19941
19942         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19943
19944         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19945         * mini-ops.h: Add OP_RETHROW.
19946
19947         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19948
19949         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19950
19951 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19952         
19953         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19954         Makes the output much easier to read
19955
19956 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19957
19958         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19959         prevents another huge leak when compiling with ssa. Secondly, the
19960         performance of doing this rather than freeing the lists is much
19961         better. GList does a lock every time you allocate a list link,
19962         so that it can use a memory pool. So, it is better to just use
19963         a memory pool of our own.
19964         
19965         * ssa.c, linear-scan.c: replace g_list_remove_link with
19966         g_list_delete.  The remove one does not free the GList, so we were
19967         leaking memory. On -O=all --compile-all with corlib, this cut down
19968         3 MB of allocations.
19969
19970 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19971
19972         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19973
19974         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19975
19976         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19977         into a new function mono_create_jit_trampoline ().
19978
19979 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * trace.c (get_spec): Allow tracing of classes without a namespace.
19982
19983 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19984
19985         * mini.c: Fix pointer overwrite in mini_method_compile.
19986
19987 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19988
19989         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19990         The darwin ABI needs some special handling for 1 and 2 byte structs
19991         Lets use lbz/lhz instead of lwz everywhere.
19992         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19993         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19994         Use stb/sth for the former, and put the latter always on stack instead of in
19995         argument registers.
19996
19997 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * trace.c (is_filenamechar): Add '_'.
20000
20001 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20002
20003         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20004
20005         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20006
20007 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20010         depends on libmonogc. Fixes #68805.
20011
20012 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20013
20014         * mini.c (mono_jit_free_method): Provide extra information for
20015         this error.  Currently this leaks, but will be turned into a
20016         developer option in the future.
20017
20018 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20019
20020         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20021
20022 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20025         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20026         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20027
20028 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20029
20030         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20031         trampolines for AOT code.
20032
20033 2004-10-22    <vargaz@freemail.hu>
20034
20035         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20036         constructed types. Fixes #68136.
20037
20038 2004-10-21  Martin Baulig  <martin@ximian.com>
20039
20040         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20041         if it returns true, unwind the stack to the call instruction.
20042
20043 2004-10-21    <vargaz@freemail.hu>
20044
20045         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20046
20047         * mini.h: Bump AOT version number.
20048
20049         * objects.cs: Add another test for unbox trampolines.
20050
20051         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20052         valuetype methods.
20053
20054 2004-10-20    <vargaz@freemail.hu>
20055
20056         * driver.c: Add SHARED to the set of optimizations tested.
20057
20058         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20059
20060         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20061         used by CEE_NEWARR.
20062
20063         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20064
20065 2004-10-20  Martin Baulig  <martin@ximian.com>
20066
20067         * mini-exceptions.c (mono_handle_exception): Call
20068         mono_debugger_handle_exception() to tell the debugger about
20069         catch/finally clauses.
20070
20071 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20074
20075         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20076         #68447.
20077
20078 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20079
20080         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20081         methods as their native size, fixed bug #57543, #57545.
20082         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20083         This saves a temporary register and mullw call down into 1 (minor perf
20084         increase for cases like sum = sum * 5;  This use to translate into:
20085             li r11,5
20086             mullw r28,r28,r11
20087         It now translates to
20088             mulli r28,r28,5
20089
20090 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20093         #68388.
20094
20095 2004-10-11  Martin Baulig  <martin@ximian.com>
20096
20097         * mini.c (mono_method_to_ir): If we're a generic method, get the
20098         MonoGenericContainer from our MonoMethodNormal and create a
20099         MonoGenericContext from it.
20100
20101 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20104
20105         * basic-long.cs: Add test for checked i8->i2 cast.
20106
20107 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20108
20109         * inssel-ppc.brg: added a couple of speedup rules.
20110
20111 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20112
20113         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20114         to speed up rebuilds.
20115
20116 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20117
20118         * mini-s390.c: Minor fix to OP_OR_IMM.
20119
20120 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20123         better. Fixes appdomain-unload.exe on sparc.
20124
20125 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20126
20127         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20128         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20129         see bug 67324.
20130
20131 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20134
20135 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20136
20137         * mini.c: Always generate a field read/write wrapper for members
20138         of the class MarshalByRefObject since the actual instance could
20139         be a CBO.
20140
20141 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20142
20143         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20144
20145 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * driver.c mini.h trace.c: Move the setting of the main assembly into
20148         a separate function called mono_trace_set_assembly () and call it after
20149         actually loading the main assembly. Fixes #66872.
20150
20151 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20154         using the code manager.
20155
20156 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20159
20160 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * cpu-amd64.md: Fix bug in previous patch.
20163         
20164         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20165         #66650.
20166
20167 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20168
20169         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20170         mini-exceptions.c: updates for changed stack walk interface.
20171
20172 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20173
20174         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20175
20176 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20179
20180 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20181
20182         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20183         since assemblies can't be unloaded.
20184         
20185 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20186
20187         * cpu-amd64.md: Fix more instruction lengths.
20188
20189         * cpu-amd64.md: Fix lengths of some instructions.
20190
20191 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20192
20193         * inssel.brg: Make the array ldelema check aot friendly.
20194
20195 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20198
20199         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20200
20201 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20202
20203         * mini-x86.c: Fix build.
20204
20205         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20206         mono_type_get_underlying_type () helper function to simplify code.
20207         
20208 2004-09-09  Martin Baulig  <martin@ximian.com>
20209
20210         * mini-amd64.c: Don't access `type->data.klass' directly, call
20211         mono_class_from_mono_type() instead since the type may be a
20212         generic instance.
20213
20214 2004-09-09  Martin Baulig  <martin@ximian.com>
20215
20216         * mini-amd64.c (get_call_info): Fix support for generic instances.
20217         (add_valuetype): Use mono_class_from_mono_type() to get the class
20218         since we can be a generic instance.
20219
20220 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20221
20222         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20223
20224 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20225
20226         * liveness.c: reset spill costs on each scan: bug 62107
20227
20228 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20229
20230         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20231         unnecessary line that doesn't compile
20232
20233 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20234
20235         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20236         trampolines, make them call an error function so people can fix their
20237         code.
20238
20239 2004-09-06  Martin Baulig  <martin@ximian.com>
20240
20241         * mini.c (mono_method_to_ir): When initializing locals, handle a
20242         generic instances like a valuetype if it's a valuetype and like a
20243         class if it's a class.
20244
20245 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20248         stack. Fixes #64674.
20249
20250         * exceptions.cs: Add test for unwinding of call arguments.
20251
20252 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20253
20254         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20255         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20256         set the carry/borrow flag). The sparc and s390 implementations
20257         can now use optimized versions (and simplify the code). ppc bugfixes.
20258
20259 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20260
20261         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20262
20263 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * inssel-amd64.brg: Remove leftover 32 bit rule.
20266
20267         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20268
20269 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20272         mono_arch_find_jit_info functions into a new function. Fix a memory
20273         leak.
20274
20275         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20276         refactored code.
20277         
20278 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20281         as well.
20282         
20283         * exceptions.cs: Add array size tests.
20284
20285         * mini.c: Allocate a separate icall wrapper for each arity of 
20286         mono_array_new_va. Fixes #59509.
20287
20288         * exceptions.cs: Add testcase for 64578.
20289
20290         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20291
20292         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20293         
20294 2004-09-02  Martin Baulig  <martin@ximian.com>
20295
20296         * mini.c (mono_method_to_ir): When initializing the locals, call
20297         handle_initobj() on the generic instance itself, not its
20298         underlying type.
20299
20300 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20301
20302         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20303         MonoJitInfo for dynamic methods.
20304
20305         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20306
20307         * mini.c: Add support for freeing JIT data for dynamic methods.
20308         
20309 2004-09-01  Martin Baulig  <martin@ximian.com>
20310
20311         * mini-x86.c (is_regsize_var): Added support for generic
20312         instances.
20313         (mono_arch_emit_prolog): Make this compile again, use
20314         `x86_push_imm_template (code)'.
20315
20316 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20317
20318         * mini-x86.c: make all push_imm instructions that get
20319         patched always emit the long form
20320
20321 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20324         in a per-domain hash.
20325
20326         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20327         types.
20328
20329 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20330
20331         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20332         work.
20333         
20334         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20335         work.
20336
20337         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20338         Beginnings of SSE2 support.
20339
20340         * exceptions.cs: Add more tests for checked int<->uint casts.
20341
20342 2004-08-28  Martin Baulig  <martin@ximian.com>
20343
20344         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20345         generic instances.
20346
20347         * mini.c
20348         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20349         Handle generic instances recursively.
20350
20351 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20352
20353         * iltests.il: test for conv.u8 on a constant
20354
20355 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20356
20357         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20358         LCONV_x4 (shrun_32 (membase)).
20359
20360 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20361
20362         * inssel-x86.brg: c&p rules for push/setret of long
20363
20364 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20365
20366         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20367         compare (regvar, base)
20368
20369         * inssel-x86.brg: more burg love
20370
20371         * inssel.brg: more cleanup
20372
20373         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20374
20375 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20376
20377         * basic-long.cs, basic-calls.cs: new tests for optimization.
20378
20379 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20380
20381         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20382         patch.
20383
20384 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20387         
20388 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20389
20390         * inssel.brg (mini_emit_memcpy): use 
20391         NO_UNALIGNED_ACCESS to disable memcpy optimization
20392
20393 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20394
20395         * mini-amd64.c: Handle generic types in various places.
20396
20397         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20398
20399 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20400
20401         * mini.c (handle_box): Fix warning.
20402
20403         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20404
20405         * mini-amd64.h: Enable the emit_state optimization.
20406
20407         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20408
20409         * mini-amd64.c: Add some new 64 bit peephole opts.
20410
20411         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20412
20413         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20414
20415         * mini-amd64.c: Register allocator fixes.
20416
20417         * mini.c: Add an optimization to emit_state to avoid allocation of new
20418         registers on some platforms.
20419
20420 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20423
20424         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20425         allocation. Fixes #63085.
20426
20427         * basic-long.cs: Add new regression test.
20428
20429         * mini-amd64.c: Register allocator improvements.
20430
20431 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20432
20433         * mini-amd64.c (read_tls_offset_from_method): Add another code
20434         sequence.
20435
20436         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20437         instruction sequence for nullifying class init trampolines.
20438
20439         * objects.cs: Add new regalloc test.
20440
20441         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20442
20443 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20444
20445         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20446         
20447         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20448         arguments.
20449
20450         * driver.c: Fix profiling after TLS changes.
20451         
20452         * driver.c (mono_main): Set mono_stats.enabled if needed.
20453
20454         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20455         CEE_BOX.
20456
20457 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20458
20459         * mini-x86.c: use a 1 op rather than a 2 op tls access
20460         instruction -> faster.
20461
20462 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20463
20464         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20465         x86 backend.
20466
20467 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20468
20469         * exceptions-sparc.c (throw_exception): fix typo
20470
20471 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20472
20473         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20474         set tree->dreg correctly with tls. Allow any
20475         register to be used.
20476
20477         * mini-x86.c (read_tls_offset_from_method): add new code
20478         generation pattern seen with GCC.
20479
20480
20481 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20482
20483         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20484         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20485         exceptions-sparc.c: fix some performance issues in exception
20486         handling and setting of the stack trace for exceptions that were
20487         already thrown.
20488
20489 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20492         x86 backend.
20493         
20494         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20495         registers.
20496
20497 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20498
20499         This patch inlines tls access, when possible.
20500         
20501         * mini.h: new arch functions for TLS intrinsics.
20502         All platforms updated with a stub.
20503
20504         * mini.c: use the new intrinsics
20505
20506         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20507         arch specific intrinsic for tls variables
20508
20509 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20512         under windows.
20513
20514 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20515
20516         * mini.c: thread local allocation
20517
20518 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20519
20520         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20521
20522         * Makefile.am: Link against the static version of libmonogc.
20523         
20524         * Makefile.am: Link the static versions of the convenience libraries
20525         into the mono executable.
20526
20527         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20528
20529 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20530
20531         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20532         on integer overflow.
20533
20534         * mini-amd64.c: Reorganize function call code.
20535
20536         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20537
20538 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20539
20540         * inssel-x86.brg: use xor eax,eax.
20541         
20542         * basic.cs: new tests
20543
20544 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20545
20546         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20547         in exception throwing code.
20548         
20549 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20550
20551         * inssel-x86.brg: use xor esi,esi.
20552
20553 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20556         can trace methods compiled during mini_init () too.
20557
20558         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20559         CEE_CONV_U4.
20560
20561 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20562
20563         * Makefile.am: static link on x86 (r=zoltan)
20564
20565 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20568         code since it causes some programs to fail.
20569
20570 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20571
20572         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20573
20574 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20575
20576         * mini.c: ovfops_op_map - add STACK_OBJ case for
20577         CONV_I 
20578         * basic.cs: add test_0_pin_string as test
20579         case for above.
20580
20581 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20582
20583         * Makefile.am: build C# if srcdir != builddir
20584
20585 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20586
20587         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20588         fall-through blocks.
20589
20590 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20591
20592         * driver.c: enable loop by default again and include abcrem in -O=all.
20593
20594 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20595
20596         * iltests.il: Add some localloc tests.
20597
20598         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20599
20600         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20601         Fixes #62574.
20602
20603         * inssel-amd64.brg: Add some optimizations.
20604
20605         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20606         for gcc-3.4.
20607
20608         * Makefile.am: Statically link mono against libmono on AMD64.
20609         
20610         * mini-amd64.c inssel-amd64.brg: Optimizations.
20611
20612 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20613
20614         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20615
20616         * tramp-amd64.c: Patch calling code in trampolines.
20617
20618 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * mini-amd64.c: pinvoke struct passing fixes.
20621
20622 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20623
20624         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20625         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20626
20627 2004-08-05  Duncan Mak  <duncan@ximian.com>
20628
20629         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20630         CEE_LDELEM_ANY.
20631
20632 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20633
20634         * mini-amd64.c (emit_move_return_value): Move return value for normal
20635         calls too.
20636
20637 2004-08-05  Martin Baulig  <martin@ximian.com>
20638
20639         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20640         `type->type'; just modify `type' itself when dealing with enums
20641         and generic instances.
20642         (check_call_signature): Make `simple_type' a `MonoType *'.
20643
20644 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * mini.c: Use OP_PADD to add offsets to addresses.
20647
20648         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20649
20650 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20651
20652         * mini-sparc.c (mono_arch_emit_epilog): fix check
20653         for folding last op into restore instruction
20654
20655 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20656
20657         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20658         helper methods using the code manager.
20659         
20660         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20661
20662         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20663
20664 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20665         
20666         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20667           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20668
20669         * mini-s390.c: fix tail processing
20670
20671 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20672
20673         * mini-ppc.c: mul.ovf.un exception name fix.
20674
20675 2004-08-03  Martin Baulig  <martin@ximian.com>
20676
20677         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20678         instances; before jumping to `handle_enum', also modify `ptype'.
20679
20680 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20681
20682         * cpu-sparc.md: fcall maximal length too small.
20683
20684 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20685
20686         * mini-amd64.c mini.h: Add initial support for passing/returning 
20687         structures to/from pinvoked methods.
20688
20689 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20690
20691         * mini-ppc.c: reg allocator fix.
20692
20693 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20696
20697         * inssel.brg: Optimize memset on 64 bit machines.
20698
20699         * mini-amd64.c: Fix some vararg cases.
20700
20701 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20702
20703         * mini-s390.c: Corrected macro in emit_float_to_int
20704
20705         * s390-abi.cs: Tests to exercise the s390 ABI
20706
20707 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20710         caller saved regs.
20711
20712         * basic.cs: Add a test for add.ovf.un.
20713
20714 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20715
20716         * mini-sparc.c: add case for OP_IDIV_UN
20717
20718 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20719
20720         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20721         
20722         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20723
20724 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20725
20726         * basic.cs: regression tests.
20727
20728         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20729         regressions.
20730
20731 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20732
20733         * basic.cs: Add a new test.
20734
20735         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20736         and AOT. Various fixes and optimizations.
20737
20738         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20739
20740 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20741
20742         * mini-ppc.c: make sure temp regs are not used for global reg
20743         allocation.
20744
20745 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20746
20747         * cpu-sparc.md: conv_i8 fix for 64bits
20748
20749         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20750
20751 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20752         
20753         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20754         add opcode for cmp BYTE PTR [eax], imm.
20755
20756         * inssel.brg: Make memcpy and memset takes bases.
20757
20758 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20759
20760         * *-amd64.*: More AMD64 work.
20761         
20762 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20763
20764         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20765         add a compare-not-equal opcode.
20766         
20767 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20768
20769         * mini.c: Use mono_init_from_assembly instead of mono_init.
20770         
20771 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20772
20773         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20774
20775         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20776
20777         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20778
20779         * inssel.brg: 64 bit fixes.
20780
20781         * mini.h (MonoCallInst): Add some AMD64 specific data.
20782
20783         * mini.h: Add some OP_P opcodes.
20784
20785 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20786
20787         * basic.cs: tests for 61797 and 61740
20788
20789 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20790
20791         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20792         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20793
20794 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20795
20796         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20797
20798         * *-amd64*.*: Ongoing AMD64 work.
20799
20800 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20801
20802         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20803
20804         * *-amd64*: Ongoing AMD64 work.
20805
20806         * mini-arch.h: Add AMD64 support.
20807
20808         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20809
20810         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20811
20812         * mini-ops.h: Add new opcodes.
20813
20814         * Makefile.am: Add AMD64 support.
20815
20816         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20817         rules into the inssel-long*.brg files.
20818
20819         * *-amd64.*: Add beginnings of AMD64 backend.
20820
20821 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20822
20823         * mini.c (print_dfn): commenting out the code that prints
20824         the cil. With -O=deadce, this makes -v -v crash.
20825         
20826         * cpu-pentium.md: make checkthis have a length of 2
20827
20828 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20829
20830         * mini-sparc.h: fix implementations of __builtin
20831         functions for Sun compiler for V9.
20832
20833 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20834
20835         * mini.c: use the new stelem.ref wrapper
20836         * exceptions.cs, arrays.cs: new stelem.ref tests
20837
20838 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20839
20840         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20841         new XSP should work with these changes).
20842
20843 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20844         
20845         * inssel-{long32,x86,}.brg: trivial optimizations.
20846         
20847 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20848
20849         * mini.c: load value when emitting box operation in
20850         constrained calls.
20851
20852 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20853
20854         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20855         is one byte shorter than cmp DWORD PTR [eax], 0.
20856
20857 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20858
20859         * inssel-ppc.brg: arguments on the stack are always
20860         relative to the stack pointer (spotted by Neale Ferguson).
20861
20862 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20863
20864         * exceptions-x86.c: delay appending the method name to the trace until
20865         after mono_jit_info_table_find is called, as this gets the real
20866         MonoMethod.
20867
20868 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20869
20870         * aot.c: register roots
20871
20872 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20873
20874         * aot.c : I could just use PLATFORM_WIN32 flag.
20875
20876 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20877
20878         * aot.c : Reverting the previous fix. This time it broke linux build.
20879
20880 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20881
20882         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20883
20884 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * mini.c (handle_stack_args): Remove some more debugging code.
20887         
20888         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20889
20890         * driver.c mini.h aot.c: Allow additional options to be specified with
20891         --aot and pass them to mono_compile_assembly.
20892
20893         * aot.c: Add experimental code to AOT compile all loaded assemblies
20894         on demand and save the code into a cache in the filesystem.
20895
20896         * aot.c: Add support for more wrapper methods.
20897         
20898         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20899         58863.
20900
20901         * cpu-*.md: Remove removed opcodes.
20902
20903         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20904         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20905         related icalls to marshal.c.
20906
20907 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20908
20909         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20910
20911         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20912
20913         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20914
20915 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20916         * liveness.c: If liveness is recomputated we need to reset the information
20917         for each variable. This way, if the liveness range has been narrowed
20918         by optimizations that happened after the last computation, we can return
20919         a smaller range.
20920         
20921         For example, if you have
20922         
20923         {
20924                 int i = 0;
20925                 
20926                 // Tons of code that does not affect i
20927                 
20928                 i = foo ();
20929                 ...
20930         }
20931         
20932         i = 0 is dead code and will be removed by SSA. However, when
20933         linear scan gets to the code, i will still appear to be live
20934         throughout the entire block. This prevents good register allocation.
20935
20936 2004-07-06  Martin Baulig  <martin@ximian.com>
20937
20938         * debug-mini.c (mono_debug_init_method): Allow
20939         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20940         (mono_debug_add_icall_wrapper): New method.
20941
20942         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20943
20944 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20945
20946         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20947         optimization.
20948
20949 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20950
20951         * aot.c (mono_aot_load_method): Fix loading of debug info.
20952
20953 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20954
20955         * aot.c: Add logging support.
20956
20957 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20958
20959         * mini.h: Add prototype for mono_print_method_from_ip.
20960
20961         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20962
20963         * inssel.brg: 64 bit fixes.
20964
20965         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20966         inssel-long32.brg.
20967
20968         * Makefile.am: Add SPARC64 support.
20969
20970 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20971
20972         * aot.c: Fix alignment problems on 32 bit platforms.
20973
20974 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20977         SPARC64.
20978
20979         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20980         problems.
20981
20982         * mini.h: Bump AOT file version. Some 64 bit fixes.
20983
20984 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * inssel-sparc.brg: Add new rule to avoid register moves.
20987
20988         * inssel.brg: Add ldind_to_load_membase helper function.
20989
20990 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20991
20992         * mini.c: OffsetToStringData intrinsic.
20993         
20994 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20995
20996         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20997
20998         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20999         regression tests.
21000
21001         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21002 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21003
21004         * mini.c: reinstated mono_compile_get_interface_var()
21005         on x86, too, since the change breaks the Gtk# build there as well.
21006
21007 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21008
21009         * driver.c: remove loop from the default optimizations: it seems to
21010         interact badly with some of the other options (see bug #60613).
21011
21012 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21013
21014         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21015         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21016
21017 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21018
21019         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21020         vararg-using methods.
21021
21022 2004-06-21  Martin Baulig  <martin@ximian.com>
21023
21024         * mini/mini-exceptions.c
21025         (mono_handle_exception): Added `gpointer original_ip' argument.
21026         After calling mono_unhandled_exception(), call
21027         mono_debugger_unhandled_exception() and if that returns true,
21028         restore the context and return.
21029
21030 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21031
21032         * mini-ppc.c: prefer the use of relative branches so
21033         they won't need to be patched in aot code (patch from Patrick Beard).
21034
21035 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21036
21037         * aot.c: patch from Patrick Beard to make the output assembly
21038         more correct for the MacOSX assembler. Small tweak to
21039         generate sane images on Linux/PPC, too.
21040
21041 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21042
21043         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21044         case until bug #59509 is fixed (shows up in #60332).
21045
21046 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21047
21048         * mini.c: make sure the needed wrappers are compiled, too, with
21049         precomp.
21050
21051 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21052
21053         * driver.c: remove NPTL reference in --version output.
21054
21055 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21056
21057         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21058         generate valid assembly for the Mach-O assembler.
21059
21060 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21061
21062         * driver.c: don't include abcrem in the all optimization specifier
21063         since it slows down jit compilation too much for now.
21064
21065 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21066
21067         * mini.c: use BIGMUL only if both operands have the same signage.
21068         * iltests.il: Test for bug 60056. (errors related to signage in
21069         BIGMUL).
21070
21071         r=lupus.
21072
21073 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21074
21075         * mini.c, aot.c: memory leak fixes.
21076
21077 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21078
21079         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21080
21081 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21082
21083         * Makefile.am: remove the -static hack completely, it links in
21084         statically glib as well.
21085
21086 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21087
21088         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21089         * exceptions.cs: make it compile with new mcs/csc.
21090
21091 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21092         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21093         and added relevant test case.
21094
21095 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21096
21097         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21098         regressions in gtk-sharp.
21099
21100 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * exceptions.cs: New regression tests.
21103
21104         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21105
21106 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21107
21108         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21109
21110 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21113
21114         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21115
21116 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21117
21118         * mini.c (mono_jit_runtime_invoke): Init class in this
21119         method instead of trusting mono_jit_compile_method to
21120         do the work (because wrappers can be in object class)
21121
21122 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21123
21124         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21125
21126         * basic-long.cs: New regression test.
21127
21128 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21129
21130         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21131         and div/rem checks.
21132
21133 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21134
21135         * Makefile.am: fix miguel's change to build mono statically against
21136         libmono (track build dependencies).
21137
21138 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21139
21140         * cfold.c: Some glib versions do not have G_MININT32.
21141
21142 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21143
21144         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21145         with precision of tan, atan, sin and cos, and implemented related
21146         regressions tests (fixes bug 54467, but one new problem appeared and
21147         is not fixed yet).
21148
21149 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21150
21151         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21152
21153         * exceptions.cs: Add test for constant folding && division by zero.
21154
21155         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21156         since driver.c is in libmono too, so the optimization was useless.
21157
21158         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21159         variable to driver.c so the compiler can emit more efficient code to
21160         access them.
21161
21162 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21163
21164         * Makefile.am: don't distribute generated inssel.[ch] files.
21165
21166 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21167
21168         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21169         into the default appdomain. Fixes #58707.
21170
21171         * jit-icalls.c: Remove the broken approximation for truncl, doing
21172         no conversion is better.
21173
21174         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21175         Fixes #58863.
21176
21177 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21178
21179         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21180         of the mcrxr instruction which is not available on some processors
21181         even if it's documented to be. Implement add and sub overflow correctly
21182         (still not complete for long unsigned). Speed up icalls a bit.
21183
21184 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21185
21186         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21187         we run .cctor in the current domain instead of target_domain.
21188         
21189         Fixes bug #58558, .cctor not being called in -O=shared.
21190
21191 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21192
21193         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21194
21195 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21196
21197         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21198         which can be done with an imm8, do it that way.
21199         (mono_arch_output_basic_block): ditto for a jmp
21200         (mono_arch_emit_prolog): Computate maximum offset of a label.
21201
21202 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21203
21204         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21205         now tries to allocate prefered physical reg's for virtual
21206         regs. This reduces the number of emited spills/loads with
21207         20-30% on our core assemblies.
21208
21209 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21210
21211         * jit-icalls.c: truncl() is not needed and trunc() is
21212         the correct thing to do anyway (bug #58287).
21213
21214 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21215
21216         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21217         if available.
21218
21219 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21220
21221         * driver.c: enable loop optimizations by default.
21222
21223 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21224
21225         * mini-x86.c: fix calc of max loop size when aligning loops start.
21226
21227 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21230         the stack.
21231
21232 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21233
21234         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21235         should set carry.
21236
21237         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21238
21239         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21240         
21241         * mini.c (inline_method): Allways inline some wrappers even if the cost
21242         is too large. Fixes #58785.
21243
21244         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21245         
21246 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21247
21248         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21249         (crichton@gimp.org). Beginning of support for sparc/linux.
21250
21251         * mini-sparc.c: Optimize retrieval of LMF address.
21252
21253 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21254
21255         * exceptions-ppc.c:  handle alloca in methods with clauses.
21256
21257 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21258
21259         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21260
21261 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21262
21263         * mini.c: Delegate most of the abort signal work to 
21264           mono_thread_request_interruption, which also handles Stop and Suspend
21265           states.
21266
21267 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21268
21269         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21270         supports the save/restore lmf opcodes.
21271
21272 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21275         by gcc-3.4 as well.
21276
21277         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21278
21279 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21280
21281         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21282         methods which contain array accesses.
21283
21284         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21285         boundaries. Fixes #58537.
21286
21287         * iltests.il: Add regression test for #58537.
21288
21289 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21290
21291         * mini-x86.c (mono_arch_local_regalloc): Last part of
21292         fix for bug #58633 (releasing register to early).
21293
21294 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21295
21296         * basic-long.cs: Add new regression test.
21297
21298 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21299
21300         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21301         register too early on the chain.
21302
21303 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21304
21305         * mini.c (create_helper_signature): Use a helper function to reduce
21306         the code which needs to be written. Also set the calling convention of
21307         icalls on windows. Fixes #57840.
21308
21309 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21310
21311         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21312         exceptions-ppc.c: added helper function to get the instruction address
21313         from a signal handler context.
21314
21315 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21316
21317         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21318         from gonzalo.
21319
21320 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21321
21322         * helpers.c: Add new env variable to pass args to objdump.
21323         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21324
21325 2004-05-17  Radek Doulik  <rodo@ximian.com>
21326
21327         * Makefile.am (common_sources): added abcremoval.h so it get
21328         disted and daily mono packages on go-mono.com will build again
21329
21330 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21331
21332         * abcremoval.c: Fixed coding style, added copyright header.
21333
21334         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21335
21336         * mini.h: Added prototype for abc removal main function.
21337
21338         * build_relations_propagation_table.pl: Added copyright header.
21339
21340 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21341
21342         * basic-long.cs: reg test for complex ceq_long bug.
21343
21344 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21345
21346         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21347         reg in long and clob case (bug #58343). Fixed/added comments.
21348
21349 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21350
21351         * mini.c (mono_jit_runtime_invoke): Follow new convention
21352         of calling the invoke method with an function pointer.
21353
21354 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * ChangeLog: Fix author of memory leak patch.
21357
21358 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21359
21360         * Makefile.am: fix make dist as well...
21361
21362
21363 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21364
21365         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21366         on archs where pointers are 4 bytes long.
21367
21368         * Makefile.am: Added abcremoval.c source file.
21369
21370         * abcremoval.c: Added abcremoval.c.
21371
21372         * abcremoval.h: Added abcremoval.h.
21373
21374         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21375
21376         * inssel.brg: Enabled bounds check removal.
21377
21378         * mini.c: Added support for abcrem optimization.
21379
21380         * mini.h: Added abcrem optimization label.
21381
21382         * driver.c: Added support for abcrem optimization.
21383
21384         * propagated_relations_table.def: Added propagated_relations_table.def.
21385
21386 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21387
21388         * mini.c, cfold.c: fix style.
21389
21390 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21391
21392         * mini.c: handle issue with the low-level implementation of
21393         some long opcodes (bug #54209).
21394
21395 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21396
21397         * basic.cs: test for my new cmov stuff.
21398
21399 2004-05-13      Patrik Torstensson
21400
21401         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21402         opt and added peephole documentation.
21403
21404 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21405
21406         * tramp-ppc.c: rewrote the generic trampoline code.
21407
21408 2004-05-11      Patrik Torstensson
21409
21410         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21411
21412 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21415
21416         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21417         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21418
21419         * mini.c: Add new icalls for AsAny marshalling.
21420
21421 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21422
21423         * tramp-ppc.c, mini-ppc.c: more cleanups.
21424
21425 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21426
21427         * mini.c: no warnings.
21428
21429 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21430
21431         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21432
21433 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21434
21435         * mini.c: In the thread abort signal handler, if the thread is in the
21436         process of being stoped, don't throw the Abort exception, just stop the
21437         thread.
21438
21439 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21440
21441         * tramp-ppc.c: removed old code.
21442
21443 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21444
21445         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21446         do some simple speed optimizations on ppc.
21447
21448 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21449
21450         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21451         and large offsets in load/store.
21452
21453 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21454
21455         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21456         it causes regressions.
21457
21458 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21459
21460         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21461         support.
21462
21463 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21464
21465         * jit-icalls.c: remove warnings.
21466         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21467         speedups for unsafe code.
21468
21469 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21470
21471         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21472
21473 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21474
21475         * basic-calls.cs: Add new regression test.
21476
21477         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21478         more portable.
21479
21480         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21481
21482         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21483         is no longer used.
21484
21485 2004-05-06      Patrik Torstensson
21486
21487         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21488         long reg allocation in any reg (not only eax:edx) and implemented 
21489         long shl/shr ops in asm instead of helpers.
21490
21491 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21492
21493         * mini-sparc.h: Fix warnings.
21494
21495         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21496         stack.
21497
21498         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21499         separate statement for clarity.
21500
21501         * mini-sparc.c: Update status.
21502
21503 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21504
21505         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21506         here.
21507
21508 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21509
21510         * inssel-ppc.brg: another small pre-release workaround:
21511         we don't do overflow detection for long_sub_un.
21512
21513 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21514
21515         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21516         (also works around a weird ppc bug: 57957).
21517
21518 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21519
21520         * tramp-ppc.c: trampoline fixes.
21521
21522 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21523
21524         * mini-ppc.c: fixed typos.
21525
21526 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21527
21528         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21529         at the top of the stack. Fixed typos. Use a frame registers
21530         for all the methods with exception clauses.
21531
21532 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21533
21534         * exceptions-ppc.c: restore fp registers.
21535
21536 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21537
21538         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21539         order from the stack top (moved the stack room to save the
21540         return value for trace after the param area). Fixed corruption
21541         in restoring registers on unwind.
21542
21543 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21544
21545         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21546
21547 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21548
21549         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21550         and prolog/epilog for methods that use it. Allow
21551         enough param area room for varargs methods. Fix miguel's
21552         breakage in exception handling.
21553
21554 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21555
21556         * Makefile.am: run genmdesc only on current arch.
21557
21558 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21559
21560         * exceptions-x86.c:
21561         * mini-x86.h: fix the build on windows.
21562
21563 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * 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.
21566
21567         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21568
21569         * mini-exceptions.c: New file.
21570         
21571         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21572         Move some parts of the x86 exception handling code to an 
21573         arch-independent file so it can be shared with other ports.
21574
21575 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21576
21577         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21578
21579 2004-04-26  David Waite  <mass@akuma.org>
21580
21581         * driver.c: remove comma from end of enumeration declaration
21582
21583 2004-04-26  Jackson Harper  <jackson@ximian.com>
21584
21585         * driver.c: parse config file before loading first assembly. This
21586         allows the user gac to be enabled/disabled. 
21587         
21588 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21589
21590         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21591         simpler mechanism: we do not care what is encoded initially
21592         (branch absolute or relative), we care about the code and its
21593         target.  I kept the old code for reference for now.
21594
21595         The new code tries first to determine if the jump is anywhere in
21596         the -/+32 absolute meg range, if it succeeds, it encodes using the
21597         absolute branch;  If not, it tried to find something in the
21598         relative range, if not, it uses the handle_thunk code. 
21599
21600 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21601
21602         * exceptions-ppc.c: use the correct ip register on macosx.
21603
21604 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21605
21606         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21607
21608 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21609
21610         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21611         Raise exception on integer divide by zero by hand since the hw
21612         doesn't support it. Handle NaNs in FP compares.
21613
21614 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21615
21616         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21617         code reducing duplication between the platforms and enabled
21618         signal exception handling (on linux for now).
21619
21620 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21621
21622         * exceptions-ppc.c: more macosx support.
21623
21624 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21625
21626         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21627
21628 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21629
21630         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21631
21632 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21633
21634         * iltests.il: more tests.
21635
21636 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21639         vars as well.
21640
21641 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21642
21643         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21644
21645 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21646
21647         * liveness.c: Mark variables as volatile in all basic blocks reachable
21648         from exception clauses.
21649
21650 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21651
21652         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21653         inlining.
21654
21655 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21656
21657         * iltests.il, basic.cs: more tests for regalloc.
21658
21659 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21660
21661         * iltests.il: Some tests for register allocation modifications
21662         I have locally.
21663
21664 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * exceptions.cs: Add regression test for bug #56782.
21667
21668         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21669         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21670         the beauty of fixing the same thing in 5 different files...
21671
21672 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21673
21674         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21675         methods.
21676
21677 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * mini.c: Add support for STRWLPARRAY marshalling convention.
21680
21681 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21682
21683         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21684         to init the context to setup the regs pointer).
21685
21686 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21687
21688         * exceptions-ppc.c: more exceptions work.
21689
21690 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21691
21692         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21693         not allowed.
21694
21695 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21696
21697         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21698         can use the memory directly.
21699
21700         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21701
21702         add x86_add_membase, x86_sub_membase, x86_mul_membase
21703
21704 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21705
21706         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21707         GENERAL_REGS they were also hardcoded for all PPC ports.
21708
21709         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21710
21711         Remove hard-coded limit for floating point registers, use
21712         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21713
21714         Notice that in MacOS X calling conventions you can fit a lot more
21715         floating point values in registers, so I should update the PInvoke
21716         test to excercise the passing of floating point values on the
21717         stack (currently broken).
21718         
21719 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21720
21721         * tramp-ppc.c (create_trampoline_code): Added
21722         JUMP_TRAMPOLINE_SIZE. 
21723         (ppc_magic_trampoline): Follow the pattern from
21724         x86_magic_trampoline: if code is set to zero, return. 
21725         (create_trampoline_code): Always pass MonoMethod to the jump
21726         trampoline, before it was passing a null.
21727         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21728         share the code with mono_arch_create_jit_trampoline. 
21729
21730         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21731         implemented.
21732         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21733         implemented.  
21734
21735         * cpu-g4.md: Added length for jmp instruction, the worst case
21736         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21737         for save_lmf).
21738
21739 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21740
21741         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21742
21743 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21744
21745         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21746         before each IL instruction.
21747
21748         * mini.c (CEE_BOX): Fix warnings.
21749
21750 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21751
21752         * mini.c: removed a few unused vars and extra whitespace.
21753
21754 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21755
21756         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21757         checks.
21758         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21759         index.
21760         (OP_GETCHR): use the above
21761         (CEE_LDELEMA): use the above.
21762
21763         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21764         version of the generic impl.
21765         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21766         (CEE_LDELEMA): use the above.
21767
21768 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21771         Fixes #56317.
21772
21773         * iltests.il: Added new regression test for #56317.
21774
21775 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21776
21777         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21778         under NetBSD. Fixes #56450.
21779
21780         * liveness.c (update_gen_kill_set): Fix previous patch.
21781
21782 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21783
21784         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21785
21786 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21787
21788         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21789         ldsfld and ldsflda.
21790
21791         * inssel-sparc.brg: Add more optimizations.
21792
21793         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21794
21795 2004-04-01  Martin Baulig  <martin@ximian.com>
21796
21797         * mini.c (handle_box): New static function; moved the
21798         implementation of CEE_BOX here.
21799         (mono_method_to_ir): Added `constrained_call' variable.
21800         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21801         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21802         mono_method_get_constrained() to get the method.
21803
21804 2004-04-01  Martin Baulig  <martin@ximian.com>
21805
21806         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21807         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21808         (mono_method_to_ir): We don't need these macros anymore since
21809         mono_class_get_full() already takes care of it. 
21810
21811 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21812
21813         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21814         use @function (as doesn't accept #function here) and check the return
21815         value of system and stop if fails.
21816
21817 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21818
21819         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21820
21821 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21824
21825         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21826
21827         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21828         #56223.
21829
21830         * basic-long.cs: Add test for negation of Int64.MinValue.
21831
21832 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21833
21834         * mini-sparc.c: Update status.
21835
21836         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21837
21838         * exceptions-sparc.c: Fix return value in filters.
21839
21840         * inssel-sparc.brg: Fix register allocation in some rules.
21841
21842 2004-03-28  Martin Baulig  <martin@ximian.com>
21843
21844         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21845         if neccessary.  
21846
21847 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21850         
21851         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21852         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21853         remove unused conv_u4 opcode.
21854
21855         * mini-x86.c: Remove valgrind workaround since it slows down things
21856         even when mono is not run under valgrind.
21857
21858 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * mini-sparc.c: Update status.
21861
21862         * inssel-sparc.brg: Add some optimizations.
21863
21864         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21865         future delay slot filling. Add support for varargs, tail calls and JMP.
21866
21867         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21868         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21869
21870         * inssel.brg: Fix register allocation in OP_ARGLIST.
21871
21872         * inssel.brg: Fix warnings.
21873
21874 2004-03-25  Martin Baulig  <martin@ximian.com>
21875
21876         * mini.c (inflate_generic_field): Removed.
21877         (mini_get_method): Removed, use mono_get_method_full(),
21878         (mini_get_class): Removed, use mono_class_get_full().
21879         (mono_method_to_ir): Pass our generic context to
21880         mono_field_from_token().        
21881
21882 2004-03-25  Martin Baulig  <martin@ximian.com>
21883
21884         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21885         of a `MonoMethod *'.
21886         (mini_get_method): Take a `MonoGenericContext *' instead
21887         of a `MonoMethod *'.
21888         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21889         a new local variable called `generic_context' which holds the
21890         current `MonoGenericContext *'; use it to lookup things.
21891
21892 2004-03-24  Martin Baulig  <martin@ximian.com>
21893
21894         * mini.c (mini_get_class): New static method; if we're inside a
21895         generic instance, inflate the class if neccessary.
21896         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21897
21898 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21899
21900         * iltests.il: New regression test for #55976.
21901
21902         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21903         #55976.
21904
21905 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21908         output.
21909
21910 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21911
21912         * liveness.c: Consider SSA stores as well as loads when making vars
21913         volatile.
21914
21915         * exceptions.cs: New regression tests for register allocation.
21916         
21917 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21918
21919         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21920         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21921           domain lock only to protect puntual access to data structures.
21922           Added access lock for sighash, jit_icall_hash_name, 
21923           jit_icall_hash_addr and domain->code_mp.
21924
21925 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * driver.c: Print SIGSEGV handling method.
21928
21929         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21930
21931         * mini.c (setup_jit_tls_data): Handle case when this is called
21932         multiple times for a thread.
21933
21934         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21935         is different from fbxx_un. Fixes #54303. Also use constants instead of
21936         magic numbers in a lot of places.
21937
21938 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * exceptions.cs: Fix cctor test when --regression is used.
21941
21942 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21943
21944         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21945         for Linux/ppc.
21946
21947 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21948
21949         * inssel-ppc.brg: fixed register assignments for some rules.
21950
21951 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21952
21953         * exceptions.cs: Add test for exceptions in static constructors.
21954
21955         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21956         static constructors outside the domain lock. Fixes #55720.
21957
21958 2004-03-17  Martin Baulig  <martin@ximian.com>
21959
21960         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21961         (inflate_generic_field): Take the `MonoMethod *' instead of the
21962         `MonoClass *' and added support for generic method.
21963         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21964         have a `field->parent->gen_params', only inflate the field if it's
21965         an open constructed type.
21966
21967 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21970         exception object instead of the preconstructed ones.
21971
21972 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21973
21974         * mini.c: reverted changed to sigsegv_signal_handler commited
21975         accidentally in the previous patch.
21976
21977 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21978
21979         * mini.c:
21980         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21981         running --aot with an old assembly.
21982
21983 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21984
21985         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21986         point values.
21987
21988         * mini-sparc.c: Add support for v9 branches with prediction.
21989
21990 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21991
21992         * mini.c (mini_init): #warning is GNUC only
21993
21994         * mini-sparc.h: implement __builtin_frame_address
21995         and __builtin_return_address for Sun C compiler
21996
21997 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21998
21999         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22000
22001 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22002
22003         * basic-calls.cs: Add test for unaligned byref long argument passing.
22004
22005         * mini-ops.h: Add sparcv9 compare and branch instructions.
22006
22007         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22008         v9 instructions if we have a v9 cpu.
22009
22010         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22011         registers for global allocation.
22012
22013         * exceptions-sparc.c: Fixes.
22014         
22015 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * liveness.c (mono_analyze_liveness): Optimized version.
22018
22019         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22020
22021         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22022         sparc work.
22023
22024         * basic-float.cs basic-calls.cs: New regression tests.
22025
22026 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22027
22028         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22029         sigaltstack implementation.
22030
22031         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22032         
22033         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22034         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22035
22036 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * mini.c: Fix warnings.
22039         
22040         * mini.c (mono_resolve_patch_target): New function which contains the
22041         arch independent part of the patching process.
22042
22043         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22044         patching code to a separate function.
22045
22046 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22047
22048         * mini.c (add_signal_handler): ifdef out on Windows
22049
22050 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22053         cpu-sparc.md: Add exception handling support + other fixes.
22054
22055         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22056         typed GC detection in --version.
22057
22058         * basic.cs exceptions.cs: New regression tests.
22059
22060         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22061         the arch specific code can store data during a compilation.
22062
22063         * mini-ops.h: Add OP_SETFRET.
22064
22065         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22066         function, register a separate icall for each arity, so the icalls can
22067         get a wrapper.
22068         
22069         * mini.c (mono_print_tree): Print negative offsets in a more readable
22070         form.
22071         
22072         * mini.c: Make signal handling work on sparc.
22073         
22074         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22075
22076         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22077
22078         * jit-icalls.c: Emulate truncl by aintl on solaris.
22079
22080         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22081
22082 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22083
22084         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22085
22086 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22087
22088         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22089         a MarshalByRef type, inline a method that performs the check, taking into
22090         account that the object can be a proxy. Also implemented tow new opcodes:
22091         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22092         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22093         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22094
22095 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22096
22097         * mini-ppc.c: if a relative branch displacement is too big
22098         but it points to and area reachable with an absolute branch, 
22099         avoid the thunks.
22100
22101 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22102
22103         * mini.c: optimize small copies in cpblk.
22104
22105 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22106
22107         * basic-calls.cs basic-float.cs: New regression tests.
22108
22109         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22110         negative offsets from %fp. Implement localloc. Fix local register 
22111         allocation. Fix the case when the this argument needs to be saved to
22112         the stack. Implement some missing opcodes.
22113
22114 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * mini.c (mini_method_compile): Reenable global regalloc in methods
22117         with exception handlers.
22118
22119         * linear-scan.c (mono_varlist_sort): Fix warning.
22120
22121         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22122
22123         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22124         regalloc costs.
22125
22126         * liveness.c: Make all variables uses in exception clauses volatile, to
22127         prevent them from being allocated to registers. Fixes #42136.
22128
22129 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22132         causes regressions.
22133
22134         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22135         argument to mono_arch_regalloc_cost.
22136
22137         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22138         precisely.
22139
22140 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22141
22142         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22143         Make the cost of allocating a variable to a register arch dependent.
22144
22145         * basic-calls.cs: Fix compilation of tests.
22146         
22147         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22148         helper function to cut back on the number of #ifdefs needed.
22149
22150         * mini-ppc.c: Fix compilation.
22151
22152         * basic-calls.cs: New regression tests.
22153
22154         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22155
22156         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22157         of l0 since that is callee saved.
22158
22159         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22160         to virtual calls.
22161
22162         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22163         of delay instruction.
22164
22165         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22166
22167         * mini.h (MonoCallInst): Add 'virtual' flag.
22168
22169         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22170
22171 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22172
22173         * *.cs: New regression tests.
22174
22175         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22176         work.
22177
22178         * mini.c (mono_runtime_install_handlers): Fix build.
22179
22180         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22181         'signal_stack_size' members.
22182
22183         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22184         alternate signal stack.
22185
22186         * exceptions-x86.c: Add stack overflow handling.
22187
22188         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22189         functions to arch independent code.
22190
22191         * mini.c (mono_print_tree): Print more detailed info for load_membase
22192         opcodes.
22193         
22194 2004-02-23  Martin Baulig  <martin@ximian.com>
22195
22196         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22197
22198 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22199
22200         * mini-x86.c: fixed reg allocation for div/rem.
22201
22202 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22203
22204         * driver.c (mono_main): Report some configuratio options on --version.
22205
22206 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22207
22208         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22209         low in the address space. Correctly flush memory in thunks where we
22210         output native code.
22211
22212 2004-02-20  Martin Baulig  <martin@ximian.com>
22213
22214         * mini.c (mini_get_method): New static method; inflate all generic
22215         methods and methods in open generic instances.
22216         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22217         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22218
22219 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22220
22221         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22222
22223         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22224
22225 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22226
22227         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22228
22229         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22230         it compile using Sun's compiler.
22231
22232 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * 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.
22235
22236         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22237
22238 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22239
22240         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22241         code.
22242         * mini-ppc.c: handle calls outside of the allowed range with thunks
22243         allocated using the code manager.
22244         * tramp-ppc.c: use the code manager to hold generated native code.
22245         Fixed the magic trampoline to just patch vtable entries.
22246
22247 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22248
22249         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22250         independent file.
22251
22252 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22255         PPC.
22256
22257         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22258         if we have a working __thread implementation.
22259
22260         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22261         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22262
22263 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * mini-x86.c: Fix compilation under gcc 2.
22266         
22267 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22270         contains a call to the wrapped function.
22271
22272         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22273         OP_<CALL>_IMM opcodes, and use them under X86.
22274         
22275         * mini.c (mono_jit_find_compiled_method): Fix warning.
22276
22277         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22278
22279         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22280
22281         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22282         functionality to mini.c.
22283
22284         * mini.c (mono_create_jump_trampoline): New function to create a jump
22285         trampoline. Return a compiled method instead of a trampoline if it
22286         exists. Add a cache for jump trampolines.
22287
22288         * mini.c (mono_jit_find_compiled_method): New function to return a
22289         compiled method if it exists.
22290
22291         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22292         mono_arch_create_jit_trampoline.
22293
22294         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22295         a jump trampoline. Fixes #52092.
22296         
22297 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22298
22299         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22300         which is not up-to-date. Add check_corlib_version () instead.
22301
22302         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22303         have to call it.
22304         
22305         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22306         since newer valgrind versions do not need it.
22307
22308         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22309         compile a method with a given set of optimizations.
22310
22311         * mini.c: Compile icall wrappers on-demand instead of at startup.
22312
22313         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22314         wrapper for an icall.
22315
22316 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22319         #54063.
22320
22321         * iltests.il: Add test for non-empty stack before switch instruction.
22322
22323 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22324
22325         * mini.c: Add support for new stringbuilder marshalling conventions.
22326
22327         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22328
22329 2004-02-01  Martin Baulig  <martin@ximian.com>
22330
22331         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22332         in `ginst->mtype_argv'.
22333
22334 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22335
22336         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22337         facilitate grepping.
22338
22339 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22340
22341         * mini.c: fixed buglet in initobj generic implementation for references.
22342
22343 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22344
22345         * Makefile.am: make the version script conditional.
22346         * jit-icalls.c: handle missing truncl().
22347
22348 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22349
22350         * exceptions.cs: Add more tests for double->int conversion.
22351
22352         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22353         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22354
22355 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22356
22357         * driver.c: make --verbose --version emit an error
22358         if the loaded corlib doesn't match the runtime version.
22359
22360 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22361
22362         * mini-ppc.h: export ppc_patch().
22363         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22364         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22365         on par or better than on MacOSX.
22366
22367 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22368
22369         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22370         mono_lookup_pinvoke_call.
22371
22372         * mini-x86.c: Under windows, the default pinvoke calling convention is
22373         stdcall. Fixes #52834.
22374
22375         * mini.c (optimize_branches): Add an upper bound to the number of
22376         iterations to prevent infinite loops on strange loops. Fixes #53003.
22377
22378 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22379
22380         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22381         and ISINST. Fixes #52093.
22382
22383         * objects.cs (test_0_vector_array_cast): New tests.
22384         
22385 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22386
22387         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22388         checking in Array.Set ().
22389
22390         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22391         #52590.
22392
22393         * object.cs (test_0_multi_array_cast): New regression test.
22394
22395 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22396
22397         * exceptions-ppc.c: fix build on Linux/PPC.
22398
22399 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22400
22401         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22402         running under valgrind.
22403         (x86_magic_trampoline): Fix build bustage.
22404
22405         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22406         negative values as well. This is needed for the encoding of the line number
22407         info, since sometimes the line numbers are not in increasing order.
22408
22409 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22410
22411         * cpu-pentium.md (localloc): Increase the size of the localloc 
22412         instruction since it is a loop under Win32.
22413
22414         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22415         allocation.
22416
22417 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22420         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22421         Max Horn (max@quendi.de). Fix file names in comments.
22422
22423 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22424
22425         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22426         avoid stack overflow.
22427         (replace_usage): Avoid uninitialized variable warnings.
22428
22429         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22430         and taking the address of valuetype variables.
22431
22432 2004-01-03  Patrik Torstensson
22433
22434         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22435         for other purposes than FP later on.
22436
22437 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22438
22439         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22440         of tail calls.
22441
22442 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22443
22444         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22445
22446 2003-12-30  Patrik Torstensson <p@rxc.se>
22447
22448         * mini-x86.h: Decreased number of availiable fp regs.
22449         Solves corner cases with FP spilling.
22450
22451 2003-12-23  Patrik Torstensson <p@rxc.se>
22452
22453         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22454         for floating point stack tracking / spilling on x86. 
22455         Fixes bug #49012.
22456         
22457         * basic-float.cs: added float mul overflow test.
22458
22459 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22460
22461         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22462
22463 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22464
22465         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22466         supports for cond branches that overflow the immediate
22467         overflow offset. mcs can compile simple programs.
22468
22469 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22470
22471         * exceptions-ppc.c: exception handling support wip:
22472         finally handlers get run on exception.
22473
22474 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22477         profiling.
22478
22479 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22480
22481         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22482         initial support for stack walking and unwinding.
22483
22484 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * driver.c (mono_main): Make corlib-out-of-sync message more 
22487         descriptive. Also remove verify_corlib call.
22488
22489 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22490
22491         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22492         not overlap with other call's arguments, too.
22493
22494 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22495
22496         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22497         move to arch-specific code the choice of arch-specific
22498         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22499         * mini.c: ensure emulation calls will not interleave
22500         with other calls.
22501
22502 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22503
22504         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22505         the magic trampoline stack frame is dropped before executing
22506         the new method.
22507
22508 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22509
22510         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22511         and integer to fp conversions. Added support for overflowing
22512         arguments on the stack. Reserve a couple more registers as temps.
22513         Added support for aot compilation (as output still needs to be
22514         tweaked, though).
22515
22516 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22517
22518         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22519         Don't overwrite return register in some corner cases.
22520
22521 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22524         static constructors when AOT compiling.
22525
22526         * driver.c (mono_main): Call mono_check_corlib_version.
22527
22528 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22529
22530         * cpu-g4.md, basic.cs: fixed div target register.
22531
22532 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22533
22534         * mini-ppc.c, basic.cs: shl_imm fix with test.
22535
22536 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22537
22538         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22539         structures by value. Misc fixes.
22540         * objects.cs: more tests.
22541
22542 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22543
22544         * mini-ppc.c: lconv.ovf.i implemented.
22545
22546 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22547
22548         * mini.c:
22549         (mini_init): don't error out if someone already called g_thread_init.
22550
22551 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22552
22553         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22554         to be any type per the spec. Fix abnormal memory usage when
22555         the same object is repeatedly thrown.
22556
22557 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22558
22559         * mini.c: check for overruns in IL code.
22560
22561 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22562
22563         * TODO: Add/remove some todo entries.
22564
22565 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * driver.c (mono_main): Call mono_verify_corlib.
22568
22569 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22570
22571         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22572         This has been moved to mini.c
22573         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22574         type being casted is marshalbyref it could be a proxy, so instead of
22575         emitting the type check code, emit a call to a runtime method that will
22576         perform the check by calling CanCastTo if needed.
22577
22578 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22581         methods with large stack frames under Win32.
22582
22583 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22584
22585         * Makefile.am: Distribute regression tests.
22586
22587         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22588         at the end instead of inserting each variable into the sorted list.
22589
22590         * linear-scan.c (mono_varlist_sort): New helper function.
22591         
22592 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22593
22594         * mini.c: ensure arguments and locals are within bounds.
22595
22596 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22597
22598         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22599         related fixes.
22600
22601 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * mini.c (mono_cprop_copy_values): Fix crash.
22604
22605         * aot.c: Set verbosity back to 0.
22606         
22607 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22608
22609         * regalloc.c: complete memory leak fix by Laurent Morichetti
22610         (l_m@pacbell.net).
22611
22612 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22613
22614         * driver.c (main_thread_handler): Revert the previous patch.
22615
22616         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22617         under valgrind.
22618
22619         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22620         memory from the memory pool.
22621
22622         * driver.c (main_thread_handler): Turn on all optimizations when
22623         --aot is used.
22624
22625         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22626         an array for better performance.
22627
22628         * regalloc.c (mono_regstate_assign): Fix memory leak.
22629
22630         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22631         serialize the debug info.
22632
22633         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22634         debug info from the serialized representation.
22635
22636         * aot.c: Save debug info into the generated file and load it when 
22637         loading a method.
22638
22639         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22640
22641 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22642
22643         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22644         More FP-related fixes.
22645
22646 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22647
22648         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22649         and register allocation buglet. Hello world now runs.
22650
22651 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22652
22653         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22654         * tramp-ppc.c: fixed class init trampoline.
22655         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22656
22657 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22658
22659         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22660         mini.c: more ppc changes/fixes.
22661
22662 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22663
22664         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22665         Also optimize the case when the arguments are the same in the caller 
22666         and in the callee.
22667
22668         * iltests.il: Add tests for tail calls with valuetype arguments.
22669
22670 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22671
22672         * mini-ppc.c: fixes for struct return type.
22673
22674 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22675
22676         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22677         mono_spillvar_offset() to arch-specific code.
22678
22679 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22680
22681         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22682
22683 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22684
22685         * exceptions-x86.c: Fix stack space leaks.
22686         
22687         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22688         registers from the lmf if the method has save_lmf set.
22689
22690 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22691
22692         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22693         of icall wrappers into InvokeInDomain, since these are now per-domain.
22694
22695 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22696
22697         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22698         make some opcode emulation and intrinsic ops enabled/disabled 
22699         according to the architecture. More fixes.
22700
22701 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22702
22703         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22704
22705 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22706
22707         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22708         arch-specific handling for 'this' and struct return type to
22709         arch-specific code.
22710
22711 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22712
22713         * aot.c: prevent divide by zero error when reporting (it happened with
22714         Accessibility.dll).
22715
22716 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22717
22718         * mini.h (inst_switch): Remove unused macro.
22719
22720 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22721
22722         * aot.c:
22723         (load_aot_module): free 'info->methods' and 'info' properly. No more
22724         "free(): invalid pointer blah" messages when you have an old aot
22725         compiled assembly.
22726
22727 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22728
22729         * jit-icalls.c, mini.c: Added support for context static fields.
22730
22731 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22732
22733         * mini.c (mono_method_blittable): Methods which set LastError are not 
22734         blittable either. Fixes #51108.
22735         
22736 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22737
22738         * mini.c: flush icache.
22739         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22740
22741 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22742
22743         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22744
22745 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22746
22747         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22748         safe on IA32.
22749
22750         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22751         vararg calls.
22752
22753         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22754
22755 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22756
22757         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22758         instruction when the result is discarded.
22759
22760         * iltests.il (test_0_div_regalloc): New regression test.
22761
22762         * arrays.cs: Fix compilation error.
22763
22764 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22765
22766         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22767         float rules to inssel-x86.brg: sane architectures with FP registers
22768         don't need to implement these rules.
22769
22770 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22771
22772         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22773
22774 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22775
22776         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22777         implementation of 32 bit systems.
22778
22779 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22780
22781         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22782         (Jeroen Zwartepoorte).
22783
22784 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22785
22786         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22787         the caller and the callee matches.
22788         
22789         * mini.c (mono_method_to_ir): Add comment.
22790
22791         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22792         signbit is missing on some platforms.
22793
22794 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22795
22796         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22797
22798         * mini.c (setup_jit_tls_data): Call the new function.
22799         
22800         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22801
22802         * mini-x86.c: Add experimental support for fast access to the lmf
22803         structure under NPTL/Linux 2.6.x.
22804
22805 2003-11-06  Martin Baulig  <martin@ximian.com>
22806
22807         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22808         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22809         the debugger.
22810
22811 2003-11-02  Martin Baulig  <martin@ximian.com>
22812
22813         * mini.c (inflate_generic_field): New static method.
22814         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22815         generic instance and the field is declared in a generic type, call
22816         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22817
22818 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22819
22820         * mini.h mini.c (mono_method_same_domain): New function to return
22821         whenever the caller and the callee are in the same domain.
22822
22823         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22824
22825 2003-10-30  Martin Baulig  <martin@ximian.com>
22826
22827         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22828         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22829         method parameters.
22830         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22831         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22832
22833 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22836         propagation.
22837
22838         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22839         object here, so it is in the correct appdomain etc.
22840
22841 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22842
22843         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22844         already done.
22845         (mono_method_to_ir): Avoid freeing the type created returned from
22846         mono_type_create_from_typespec, since it is put into an internal cache
22847         by the function. Fixes pointer.exe.
22848
22849         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22850         trampolines for icalls and pinvokes as well. Fixes #33569.
22851
22852 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * mini.c: Update after appdomain changes.
22855
22856         * mini.c (mono_jit_compile_method_inner): Allways compile native
22857         method wrappers in the root domain, since there can only be one
22858         instance of them, whose address is stored in method->info.
22859
22860 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22861
22862         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22863         environment variable. Instead detect automatically whenever running
22864         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22865         valgrind.h.
22866
22867 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22868
22869         * trace.c, trace.h: New files that implement the new trace option
22870         parsing. 
22871
22872         * driver.c: Document new --trace options.
22873
22874         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22875         mini-x86.c: Apply:
22876
22877         -       if (mono_jit_trace_calls)
22878         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22879
22880         * mini.h: prototypes.
22881         
22882 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22883
22884         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22885
22886         * mini.c inssel.brg: Implement typedefbyref opcodes.
22887
22888         * mini.c (mono_jit_compile_method): Remove unused local variable.
22889
22890         * mini.c (mono_jit_compile_method_inner): Ditto.
22891         
22892 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22893
22894         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22895         
22896         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22897
22898 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * mini.c (mono_no_aot): Remove unused global variable.
22901
22902         * mini.c: Thread safety fixes.
22903
22904 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22905
22906         * mini.c (mono_create_class_init_trampoline): Add a lock around
22907         class_init_hash_addr.
22908
22909         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22910         #30073.
22911
22912         * mini.c: Decompose the NEWARR instruction before decomposing its
22913         arguments. Fixes #30073.
22914
22915 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22918         convention.
22919
22920 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22921
22922         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22923
22924         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22925
22926         * driver.c: Add support for compiling icall wrappers to --compile.
22927
22928 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22929
22930         * inssel.brg: The empty value in class->interface_offsets is -1, not
22931         0. Fixes #49287.
22932
22933 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22934
22935         * objects.cs: New test for 'is' operator on an array of interfaces.
22936
22937 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22938
22939         * tramp-ppc.c: update trampoline code to support jumps
22940         and class initialization.
22941
22942 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22943
22944         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22945
22946         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22947
22948         * inssel.brg (OP_UNBOX): Remove unused rule.
22949
22950         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22951         region instead of one for each method. Fixes #47813.
22952
22953 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22954
22955         * exceptions.cs (test_0_nested_finally): New regression test for
22956         nested exception handlers.
22957
22958         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22959
22960         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22961
22962         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22963         inlining.
22964
22965         * mini.c (mono_method_check_inlining): Make the inlining limit 
22966         configurable by an environment variable.
22967         
22968         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22969
22970         * mini.h: Bump AOT file version.
22971
22972         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22973         token, store the image along with the token, since the token might not 
22974         refer to the same image as the method containing the relocation, 
22975         because of inlining.
22976
22977 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22978
22979         * mini.c (mono_precompile_assemblies): New function to compile
22980         all methods in all loaded assemblies.
22981
22982         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22983
22984         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22985         iassign and fassign to int*, since they can contain large negative
22986         values if the register is spilled. Also added some comments. Fixes
22987         #45817.
22988
22989         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22990         under Win32. Fixes #42964.
22991
22992 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22995
22996         * aot.c: Added support for AOT compiling methods which contain calls
22997         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22998         handled.
22999         
23000         * driver.c (compile_all_methods): Run the compilation in a thread
23001         managed by mono. Fixes #44023.
23002
23003         * mini.c (mono_codegen): Print full method name in verbose output.
23004
23005         * mini-x86.c (mono_arch_patch_code): Fix warning.
23006         
23007         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23008         jumps, since the method we are jumping to might be domain-specific.
23009
23010         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23011
23012 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23013
23014         * inssel.brg: string chars are unsigned.
23015
23016 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * TODO: New todo item.
23019
23020         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23021         which calls mono_runtime_class_init and patches the call site to
23022         avoid further calls.
23023         (mono_arch_create_class_init_trampoline): New arch specific function 
23024         to create a class init trampoline.
23025         (create_trampoline_code): Generalized so it can create
23026         class init trampolines as well.
23027
23028         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23029         (mono_create_class_init_trampoline): New function to create and cache
23030         class init trampolines.
23031         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23032         vtable given the address of a class init trampoline. Used by the
23033         patching process.
23034         (mono_codegen): Generate a call to a trampoline instead of
23035         mono_runtime_class_init in LDSFLD[A].
23036         (mono_codegen): Add relocations for the new trampoline.
23037         
23038         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23039         MONO_PATCH_INFO_CLASS_INIT.
23040
23041         * mini.h: Bump AOT version number.
23042
23043         * aot.c: Create a copy of the loaded code instead of using the original
23044         so methods which call each other will be close in memory, improving
23045         cache behaviour.
23046         
23047         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23048         patch since it breaks the regression tests.
23049         
23050         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23051         for the register saving instruction sequence since the 
23052         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23053
23054 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23055
23056         * TODO: Fix todo item && remove another.
23057
23058 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23059
23060         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23061         previous checkin.
23062
23063         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23064         function of the module.
23065
23066         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23067         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23068         --no-aot command line option.
23069
23070 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23071
23072         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23073         by Bernie Solomon (bernard@ugsolutions.com).
23074
23075         * inssel.brg: Refactor the interface offset table related code into
23076         its separate functions and add support for the AOT case.
23077
23078 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23079
23080         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23081         
23082         * aot.c: Added mono_aot_verbose variable and made all debugging
23083         output depend on the value of this variable.
23084
23085         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23086         method_label and info_label.
23087
23088         * mini.h mini-x86.c aot.c: Added a new relocation type 
23089         MONO_PATCH_INFO_IID for klass->interface_id.
23090
23091         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23092         the MonoJitInfo structure.
23093
23094         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23095         a non-root appdomain in shared mode.
23096
23097 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23098
23099         * aot.c: make aot loader less verbose. Remove free of unused variable.
23100
23101 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23102
23103         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23104
23105         * .cvsignore: Added *.dll.
23106
23107         * mini.c (mono_print_tree_nl): New function callable while debugging.
23108
23109         * mini.c (mono_print_code): Export this.
23110
23111         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23112         patched code.
23113
23114 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23115
23116         * mini.h (MonoCompile): Added 'jit_info' field.
23117
23118         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23119         the cfg structure, since it is needed by the AOT compiler.
23120
23121         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23122
23123         * aot.c: A major rewrite. Changes include:
23124         - save exception tables for methods which have them.
23125         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23126         to g_module_symbol.
23127         - reworked the file format so it is now much smaller and needs
23128         fewer relocation entries.
23129         
23130 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23131
23132         * aot.c (load_aot_module): Fix build bustage on platforms without
23133         Boehm GC.
23134
23135 2003-09-04  Martin Baulig  <martin@ximian.com>
23136
23137         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23138
23139 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * TODO: Some new optimization ideas.
23142
23143         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23144
23145         * aot.c: Save the optimization flags used to compile the code into
23146         the AOT module.
23147
23148         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23149         support emitting domain specific code.
23150         
23151         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23152         no longer domain neutral. It can be made domain neutral by compiling 
23153         with --optimize=shared.
23154
23155         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23156         between appdomains.
23157
23158         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23159         loading of AOT code.
23160
23161         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23162         
23163         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23164         if there is no domain neutrality information.
23165
23166 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23167
23168         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23169         format version into the generated library.
23170
23171         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23172         callee method into the caller since one of them could be shared.
23173
23174         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23175         system exceptions from AOT code now works.
23176
23177         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23178         method if it is domain neutral and the callee is not.
23179
23180         * graph.c (cfg_emit_one_loop_level): Fix warning.
23181
23182 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23183
23184         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23185         last checkin.
23186
23187 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23188
23189         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23190         is needed  by code which is executed before mono_runtime_init ().
23191         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23192         
23193         * mini.c (mono_thread_abort): Fix warning.
23194         (mono_jit_compile_method): Call static constructor in the AOT case too.
23195
23196         * aot.c (mono_compile_assembly): Fix warning.
23197
23198 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23199
23200         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23201
23202 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23203
23204         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23205
23206         * cpu-pentium.md: Fix the length of call opcodes so they include the
23207         ESP restoring instruction. Fixes #47968.
23208
23209 2003-08-28  Martin Baulig  <martin@ximian.com>
23210
23211         * mini-x86.c (mono_arch_call_opcode): Added support for
23212         MONO_TYPE_GENERICINST.
23213
23214         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23215
23216 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23217
23218         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23219         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23220
23221         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23222         metadata_section.
23223
23224 2003-08-26  Martin Baulig  <martin@ximian.com>
23225
23226         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23227         when reporting an error, set this to the actual error location.
23228         (mono_method_to_ir): Report the correct error location if
23229         get_basic_blocks() returned an error.
23230
23231 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * mini.c (mono_type_blittable): OBJECT is not blittable.
23234         (mono_method_blittable): Methods which have marshalling descriptors
23235         are not blittable either. Fixes #47842.
23236
23237 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23238
23239         * driver.c mini.c: Use an environment variable instead of a global 
23240         variable. Also fix the build.
23241
23242         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23243         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23244         reporting this. 
23245
23246         * driver.c mini.c: Added --with-valgrind option to turn off some
23247         code which prevents mono from running under valgrind.
23248
23249         * mini.c (mono_emit_call_args): Fixed warning.
23250
23251         * mini.c (mono_emulate_opcode): Fixed warning.
23252
23253 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23254
23255         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23256         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23257         regalloc.c, regalloc.h: specify available registers in arch-specific
23258         code and support floats in the regallocator (patch by Laurent Morichetti 
23259         <l_m@pacbell.net>)
23260
23261 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23262
23263         * mini.c: mono_thread_current() can be called only after
23264         mono_runtime_init(): rearrange code to not call it early on.
23265
23266 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23267
23268         * mini.c: allocate jump tables in the code mempools.
23269
23270 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23271
23272         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23273         freed.
23274
23275 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23276
23277         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23278         12 to 16.  This fixes bug #47453.
23279
23280
23281 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23282
23283         * mini-ppc.c: fixed indexed load and unsigned compares.
23284
23285 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23286
23287         * mini.c: reenabled installation of handler for
23288           thread abort signal.
23289
23290 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23291
23292         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23293         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23294         until it's fixed and actually useful.
23295
23296 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23297
23298         * inssel-long32.brg: couple more opcodes implemented.
23299
23300 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23301         
23302         * mini-sparc.c: Even more opcodes implemeted.
23303
23304 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23305
23306         * mini-sparc.c: More opcodes implemented.
23307
23308 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23309
23310         * mini-sparc.c: More opcodes implemented.
23311
23312 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23313
23314         * inssel-sparc.brg: Add some needed rules.  Direct
23315         copy from PPC.
23316         * Makefile.am: Use inssel-sparc.brg
23317         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23318         an assert happy for now.
23319
23320 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23321
23322         * mini-sparc.c: Fixed compile errors.
23323         * exceptions-sparc.c: Same.  We now produce a mono binary 
23324         on sparc-linux.  Yea.
23325
23326 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23327
23328         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23329         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23330         They compile, but do not work.
23331
23332 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23333
23334         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23335         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23336         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23337         (ct@gentoo.org).
23338
23339 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23340
23341         * mini.c: more opcodes implemented and better support for generics.
23342
23343 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23344
23345         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23346         * mini.c, mini.h: first cut at generics support: some new instructions 
23347         added and changed the behaviour of some of the existing ones.
23348
23349 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23350
23351         * mini.c: Removed definition of metadata_shared mutex here.
23352
23353 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23354
23355         * mini-x86.c: make vararg calls work for instance methods.
23356
23357 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23358
23359         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23360         returns the arguments in a separte list, now.
23361
23362 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23363
23364         * aot.c, mini.c: updates for array type representation changes.
23365
23366 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23367
23368         * mini.c: register function to perform jit shutdown.
23369
23370 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23371
23372         * mini.c: use a faster allocator if possible.
23373
23374 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23375
23376         * aot.c: some cleanups and portability changes.
23377
23378 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23379
23380         * mini.c: use faster allocation for CEE_BOX if possible.
23381
23382 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23383
23384         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23385         Moved inlined mempcy code to its own function so that is can be
23386         reused. Added an inline memset function as well (optimized initobj).
23387         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23388
23389 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23390
23391         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23392
23393 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23394
23395         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23396         arch code can setup the cpu for CLR execution, if needed.
23397         We use it on x86 to set the precision of FP operations.
23398
23399 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23400
23401         * mini.c: disable some optimizations if we can guess they'll cost too
23402         much for a given method.
23403
23404 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23405
23406         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23407         
23408 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23409         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23410         info collection support.
23411
23412 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23413
23414         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23415         is now implemented in the profiling API. Get rid of a couple of
23416         unnecessary global variables.
23417
23418 2003-06-15  Nick Drochak <ndrochak@gol.com>
23419
23420         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23421         * cpu-g4.md: add op_bigmul and op_bigmul_un
23422         * cpu_pentium.md: add op_bigmul_un
23423         * inssel-long32.brg: add rule for unsigned bigmul
23424         * mini-ops.h: define OP_BIGMUL_UN
23425         * mini-x86.c: THE BUG: handle (un)signed properly
23426         * mini.c: choose unsigned opcode if needed.
23427         This set of patches fixes bug #44291
23428
23429 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23430
23431         * mini.c (optimize_branches): improved to handle all kinds of
23432         conditional branches.
23433
23434 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23435
23436         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23437         don't raise exceptions.
23438
23439 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23440
23441         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23442         to arch-specific files.
23443
23444 2003-06-09  Martin Baulig  <martin@ximian.com>
23445
23446         * Makefile.am (libs): Added $(LIBGC_LIBS).
23447
23448 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23449
23450         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23451         and OP_ATAN (fixes bug#44293).
23452
23453 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23454
23455         * Makefile.am, mini-x86.c: rename cpu description array to
23456         pentium_desc, since some compilers define the 'pentium' preprocessor
23457         symbol.
23458
23459 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23460
23461         * mini.c (mini_select_instructions): add explicit branch if the
23462         following block is not the false target of a conditional branch -
23463         we need this with any optimization that reorder or remove bblocks
23464
23465         * mini.c (optimize_branches): bug fixes
23466
23467 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23468
23469         * mini.c (mono_method_to_ir): inline static readonly fields
23470
23471         * ssa.c (fold_tree): start cfold support for long (very simple
23472         cases only)
23473
23474         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23475
23476 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23477
23478         * inssel.brg: fixed memcpy (bug #44219).
23479
23480 2003-06-05  Dick Porter  <dick@ximian.com>
23481
23482         * driver.c: Set the glib log levels to not abort if g_message
23483         recurses.
23484
23485         g_set_prgname() has to happen before mini_init() so that the
23486         process handle gets the info.
23487         
23488 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23489
23490         * driver.c: add intrins to the default optimizations to get wider
23491         exposure.
23492
23493 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23494
23495         * mini.h: some large basic blocks will overflow a 16-bit
23496         integers for symbolic registers.
23497
23498 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23499
23500         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23501         (mono_arch_output_basic_block): fix bug 43499 
23502
23503 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23504
23505         * mini.c: kill duplicated definition of mono_debug_format.
23506
23507 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23508
23509         * mini-x86.c, arrays.cs: fixed register allocation bug.
23510
23511 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23512
23513         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23514
23515         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23516
23517 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23518
23519         * mini.c:
23520         (print_method_from_ip): also print source location information if
23521         available.
23522
23523 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23524
23525         * mini.c (mono_find_block_region): bug fix in region code
23526         (mini_method_compile): enable removing unreachable code again, but
23527         only in methods without exception clauses.
23528
23529 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23530
23531         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23532         Implemented arglist opcode and handling of TypedReference type.
23533         Fixed x86 call convention when a structure is returned.
23534         Minimal support for calling static vararg methods.
23535
23536 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23537
23538         * mini.c (mini_method_compile):  always remove unreachable code,
23539         because the code in them may be inconsistent  (access to dead
23540         variables for example).
23541
23542 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23543
23544         * driver.c, debug-mini.c: warning fixes.
23545
23546 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23547
23548         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23549
23550 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23551
23552         * mini.c: thread-static fields are registered in mono_class_vtable(),
23553         so ensure the function is called before checking for them.
23554
23555 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23556
23557         * mini.c (optimize_branches): fix for bug 43586
23558
23559         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23560         overflow (fixes Bug #43639)
23561
23562 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23563
23564         * mini.c, objects.cs: allow the use of stobj for primitive types.
23565
23566 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23567
23568         * mini.c: be less strict about argument checking until we support
23569         running the verifier.
23570
23571 2003-05-27  Nick Drochak <ndrochak@gol.com>
23572
23573         * basic-long.cs: tests for (ulong)int * (ulong)int also
23574         * mini.c: use the same trick for (ulong)int * (ulong)int
23575
23576 2003-05-27  Nick Drochak <ndrochak@gol.com>
23577
23578         * basic-long.cs: add regression test for (long)int * (long)int
23579         * cpu-pentium.md: add op_bigmul specification
23580         * inssel-long32.brg: add OP_BIGMUL rule
23581         * mini-ops.h: add OP_BIGMUL
23582         * mini-x86.c: register allocator: handle case where src1 needs to be
23583         in EAX.
23584         * mini.c: substitute special BIGMUL opcode in the tree for 
23585         (long)int * (long)int
23586
23587 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23588
23589         * jit-icalls.c: call the type ctor on field access if needed.
23590
23591 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23592
23593         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23594         to a method (including results of ldelema, bug#43207).
23595
23596 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23597
23598         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23599         colors to show exception handler blocks.
23600
23601         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23602         (fix for pinvoke7.cs).
23603
23604 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23605
23606         * mini.h, mini.c: ensure correct initialization order for types that
23607         require it. Prepare for lazy compilation of jit icall wrappers.
23608         Provide a name for opcode emulation to reduce unneeded mallocing.
23609
23610 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23611
23612         * mini-x86.c: better register restoring code and profiling
23613         support for tail calls.
23614
23615 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23616
23617         * mini.h, driver.c: prepare for leaf methods optimization.
23618
23619 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23620
23621         * mini.c: get targets of branches before converting a method.
23622
23623 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23624
23625         * mini.c (optimize_branches): added some experimental code (disbaled) 
23626
23627 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23628
23629         * mini.c (optimize_branches): fix branch to branch optimization 
23630
23631         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23632
23633         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23634
23635         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23636
23637         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23638         if needed.
23639
23640 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23641
23642         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23643         enable use of interface variables again.
23644
23645         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23646         I1 to registers because there is no simply way to sign extend 8bit
23647         quantities in caller saved registers on x86.
23648
23649         * inssel-float.brg: set costs of some rules to 2 so
23650         that monobure always select the arch. specific ones if supplied,
23651         regardless of the order we pass the files to monoburg.
23652
23653 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23654
23655         * mini.c, mini-x86.c: since the magic trampoline for jumps
23656         can't patch the code directly, we do it as soon as the
23657         method gets compiled.
23658
23659 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23660
23661         * mini-x86.c, mini.h: introduce a new patching method
23662         to support CEE_JMP and tail calls.
23663         * mini.c: obey tail.call. Don't precompile methods target
23664         of CEE_JMP.
23665         * tramp-x86.c: new trampoline code to handle methods
23666         reached through a jump.
23667
23668 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23669
23670         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23671         bit values to registers
23672
23673 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23674
23675         * mini.c (mono_compile_get_interface_var): share interface
23676         variables if possible.
23677
23678 2003-05-16  Martin Baulig  <martin@ximian.com>
23679
23680         * debug-mini.c (mono_init_debugger): New function to initialize
23681         the debugger.  This is not in the debugger since it needs to
23682         access some of mini's internals.
23683
23684 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23685
23686         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23687
23688 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23689
23690         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23691         for value type handling.
23692
23693 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23694
23695         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23696         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23697
23698 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23699
23700         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23701           the constructor through a proxy.
23702
23703 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23704
23705         * jit-icalls.c, inssel.brg: fixes to array element address
23706         calculations.
23707
23708 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23709
23710         * mini-x86.c (is_regsize_var): allocate pointer to registers
23711
23712 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23713
23714         * driver.c: fixed typo, added intrins to the set of optimizations
23715         tested with regressions.
23716
23717 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23718
23719         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23720         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23721         test case.
23722
23723 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23724
23725         * inssel.brg: remove some common pop instructions without side effects
23726
23727 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23728
23729         * inssel-x86.brg: fixed thinko in int to double conversions.
23730
23731 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23732
23733         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23734
23735 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23736
23737         * inssel-long32.brg: two more missing instructions.
23738
23739 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23740
23741         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23742         if not already set.
23743
23744 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23747         correctly.
23748
23749         * basic-float.cs: Added tests for negative zero.
23750
23751 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23752
23753         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23754         a couple of missing operations for long casts, with test cases.
23755
23756 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23757
23758         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23759
23760 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23761
23762         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23763         code size estimation.
23764
23765 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23766
23767         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23768         abstract methods (fix bug 42542)
23769
23770         * aot.c: add ability to handle array types
23771         
23772 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * mini.c: Call the _specific versions of the object allocation
23775         functions if possible.
23776
23777 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23778
23779         * driver.c: call setlocale ().
23780
23781 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23782
23783         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23784         windows build.
23785
23786 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23787
23788         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23789
23790         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23791         wrappers (fix bug 42122)
23792
23793 2003-05-04  Martin Baulig  <martin@ximian.com>
23794
23795         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23796
23797         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23798         s/mini_set_defaults/mono_set_defaults/g.
23799
23800 2003-05-04  Martin Baulig  <martin@ximian.com>
23801
23802         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23803
23804 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23805
23806         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23807         (reported by Don Roberts).
23808
23809 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23810
23811         * mini.c: temporarily work around two bugs for this release.
23812
23813 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23814
23815         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23816         that contains -export-dynamic and it makes using the ld script
23817         useless.
23818         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23819
23820 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23821
23822         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23823         specific cpu.
23824
23825 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23826
23827         * mini.c: make sure leave calls all the needed finally blocks,
23828         even when the target jumps out of multiple exception clauses.
23829
23830 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23831
23832         * ldscript, Makefile.am: add linker script to reduce the number of
23833         exported symbols (should also fix the issues with libwine defining
23834         some of the same symbols in io-layer).
23835
23836 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23837
23838         * driver.c (mini_main): Avoid assertion when no file name is given on 
23839         the command line.
23840
23841 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23842
23843         * driver.c: added --version/-V command line option.
23844         Added the inline optimization in the regression tests.
23845
23846 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23847
23848         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23849         to the type in the method signature (fixes bug#42134).
23850
23851 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23852
23853         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23854
23855 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23856
23857         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23858
23859 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23860
23861         * driver.c: fixed bug #42100.
23862
23863 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23864
23865         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23866
23867 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23868
23869         * mini.c: moved most of the code required to do inlining to its own
23870         function so it can be reused. Inline also ctors if appropriate.
23871
23872 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23873
23874         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23875         the runtime can call mono API functions.
23876
23877 2003-04-27  Martin Baulig  <martin@ximian.com>
23878
23879         * debug-mini.c (mono_debug_init_method): Added
23880         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23881         send a notification to the debugger.
23882
23883         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23884         running in the Mono Debugger, just pass the breakpoint number to
23885         mono_debug_init_method().
23886
23887         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23888
23889 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23890
23891         * mini.c: allow some more unsafe compares.
23892
23893 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23894
23895         * mini-x86.c, Makefile.am: make distcheck works (partially from
23896         a patch by Richard Lee <r.h.lee@attbi.com>).
23897         * regset.c, regset.h: removed, they are unused.
23898
23899 2003-04-25  Dick Porter  <dick@ximian.com>
23900
23901         * driver.c: Usage reports the name as 'mono' not 'mini'
23902         * exceptions-x86.c: Build and run on freebsd
23903
23904 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23905
23906         * Makefile.am: install the program with the 'mono' name and
23907         the library as libmono instead of mini and libmini.
23908
23909 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23910
23911         * driver.c: provide the APIs for the embedding interface of the old jit.
23912
23913 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23914
23915         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23916
23917 2003-04-23  Martin Baulig  <martin@ximian.com>
23918
23919         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23920
23921         * driver.c: Added `--debug' command line argument to enable
23922         debugging support.
23923
23924 2003-04-23  Martin Baulig  <martin@ximian.com>
23925
23926         * debug.[ch]: Removed.  The code is now in
23927         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23928
23929         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23930         last six months.
23931
23932 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23933
23934         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23935
23936 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23937
23938         * mini.c:
23939         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23940         mono_domain_finalize.
23941         (mini_method_compile): use mono_method_profile* if the the option is
23942         enabled.
23943
23944 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23947         methods with their wrapper.
23948
23949         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23950         methods with their wrapper.
23951
23952         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23953         their wrapper.
23954
23955         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23956         wrapper.
23957
23958         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23959         methods.
23960
23961 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23962
23963         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23964
23965 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23966
23967         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23968         of the mempool. This is slightly faster and uses less memory
23969
23970 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23971
23972         * mini.c: avoid O(n) allocation for variables.
23973
23974 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23975
23976         * mini.c: handle items on the stack after inlining methods.
23977
23978 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23979
23980         * mini.c: make the method->opcode optimization dependent
23981         on MONO_OPT_INSTRINS and do it lazily.
23982
23983 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23984
23985         * driver.c: print overall results at the end of regression run.
23986
23987 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23988
23989         * inssel.brg: don't overwrite symbolic registers.
23990
23991 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23992
23993         * inssel-x86.brg: fix conversion from long to float.
23994
23995 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23996
23997         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23998
23999 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24000
24001         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24002
24003         * driver.c: Added --print-vtable option as in the old JIT.
24004
24005 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24006
24007         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24008
24009 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24010
24011         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24012
24013 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24014
24015         * mini.c regalloc.c regalloc.h: Fix memory leak.
24016
24017 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24018
24019         * aot.c (mono_aot_get_method): register all used strings
24020
24021 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24022
24023         * mini.c: always intern strings references with ldstr at compile time.
24024
24025 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24026
24027         * Makefile.am: add BUILT_SOURCES.
24028
24029 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24030
24031         * driver.c: give a better error message when the assembly to execute
24032         doesn't have an entry point.
24033
24034 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24035
24036         * Makefile.am: added hack for automake
24037
24038         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24039         correct sematics.
24040
24041         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24042
24043 22003-04-07  Martin Baulig  <martin@ximian.com>
24044
24045         * Makefile.am: Added Makefile.am.
24046
24047         * debugger-main.c: Removed, this is now in the debugger where it
24048         belongs.
24049
24050         * mini.pc.in: Call this package `mini' for the moment.
24051
24052
24053
24054
24055
24056
24057
24058
24059
24060
24061
24062
24063
24064
24065