2010-02-04 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2
3         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
4         #561962.
5
6 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini-llvm.c: Init the jit module only when first JITting.
9
10         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
11
12         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
13
14         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
15         replaced with the real got.
16
17         * debugger-agent.c (type_commands): Return the enumness if the type as well.
18
19         * image-writer.c: Reduce the amount of #ifdefs a bit.
20
21         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
22         llvm on darwin/arm.
23
24         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
25
26         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
27         global.
28
29 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
30
31         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
32         (mono_llvm_emit_method): Fix unaligned stores too.
33
34         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
35         so async stack walks don't crash.
36
37 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
38
39         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
40         was not patched if the callee needed an rgctx trampoline.
41
42 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
43
44         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
45         vtable address in AOT code.
46
47 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
48
49         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
50         MonoInst's.
51
52 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
53
54         * genmdesc.pl: remove dependency on external cpp.
55
56 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
57
58         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
59         using LLVM, its not needed, and abcrem can't handle it.
60
61 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
62
63         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
64         it easier to group instructions and reduce duplication.
65
66 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
67
68         * decompose.c: Move the array/soft float decompose routines here from
69         method-to-ir.c.
70
71         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
72
73 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
76         to tell LLVM that the got is constant, not used yet.
77
78         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
79
80 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
81
82         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
83         managed wrappers.
84
85 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
86
87         * aot-compiler.c (add_wrappers): Commit the hack which generates
88         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
89         custom attribute.
90
91 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
92
93         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
94         a fault, only used by the LLVM backend.
95
96         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
97         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
98
99         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
100         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
101
102         * mini-llvm.c: Only generate volatile loads from load instructions which have
103         the MONO_INST_FAULT flag set.
104
105 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
106
107         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
108         64 bit platforms.
109
110 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
113         sequence points. Fixes #571236.
114
115 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
116
117         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
118         end of the appdomain unload process, after assemblies have been unloaded.
119         Fixes #574842.
120
121 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
122
123         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
124         works.
125
126         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
127         Fixes #573988.
128
129 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
130
131         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
132
133 2010-01-26  Geoff Norton  <gnorton@novell.com>
134
135         * aot-compiler.c: Fix a logic error introduced when guarding against enums
136         with struct marshalability.
137
138 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
139
140         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
141         it supports class names as well.
142
143         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
144         needed by the GC map code.
145
146         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
147         flags if needed.
148
149         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
150         if cfg->init_ref_vars is set.
151
152         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
153         cfg->disable_initlocals_op_refs is set.
154
155         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
156         using liveness info if cfg->compute_precise_live_ranges is set.
157
158         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
159         volatile variables correctly. Add comments about the live ranges. Not enabled
160         yet.
161
162 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
163
164         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
165         0x2a into them in method prologs.
166
167         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
168
169 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
170
171         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
172         classes, since llvm is compiled with -fno-rtti.
173
174         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
175
176         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
177         llvm does not require it.
178
179         * aot-runtime.c (load_method): Print the full name of the last aot method.
180
181 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
182
183         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
184         thread has not fully started yet.
185
186 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
187
188         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
189
190 2010-01-21  Miguel de Icaza  <miguel@novell.com>
191
192         * driver.c: Do not abort if LLVM is not supported, print a
193         warning and add the information to the Mono JIT information.
194
195 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
196
197         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
198         using explicit null checks.
199
200 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
201
202         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
203         related code.
204
205         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
206         () in one place.
207         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
208         its no longer needed.
209
210         * method-to-ir.c (mono_method_to_ir): Fix a warning.
211
212         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
213         define for platforms still using it (s390). Get rid of the
214         mono_arch_get_throw_exception_by_name () routines on all other platforms.
215
216         * exceptions-x86.c: Rework the throw trampolines so there is only one function
217         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
218
219         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
220         the caller pushed the arguments.
221
222         * mini-llvm.c: Enable throwing exceptions on x86.
223
224         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
225         "Thread (nil) may have been prematurely finalized" messages if this is called
226         on a thread not registered with the runtime.
227
228         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
229
230 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
231
232         * jit-icalls.c (mono_array_new_3): New jit icall.
233
234         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
235
236         * arrays.cs: Add a test for 3 dimensional arrays.
237
238 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
239
240         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
241         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
242         used.
243
244         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
245         thrown on x86.
246
247         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
248
249         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
250
251         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
252
253 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
254
255         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
256           HOST_WIN32.  Also including winsock2. to define struct in_addr.
257
258         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
259
260         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
261
262         Code is contributed under MIT/X11 license.
263
264 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
267
268         * branch-opts.c (mono_optimize_branches): Honor the new flag.
269
270         * mini.c (mini_method_compile): Set the new flag when running under the
271         debugger.
272
273 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
274
275         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
276         a ref/noref value + a global pin flag, so parts of stack frames can still be
277         precisely marked even if they include stuff which needs pinning. Improve logging.
278         Fix many bugs. Not enabled yet.
279
280         * gc-test.cs: Add a few tests.
281
282         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
283         the normal -v options. Avoid propagating liveness information through bblocks
284         which end with a NOT_REACHED opcode.
285
286         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
287         after cfg has been freed.
288
289 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
290
291         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
292         if a clause is skipped because it uses the exception object, since it could
293         have caught the exception.
294
295         * exceptions.cs: Add a test.
296
297 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
298
299        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
300
301         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
302         ICollection<T> wrappers.
303
304 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
305
306         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
307
308 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
309
310         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
311         NOMAP32BIT or optimize_for_xen is set.
312
313 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
314
315         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
316         mono_metadata_str_hash () instead.
317
318 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
319
320         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
321         sizeof (void*).
322
323         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
324
325 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
326
327         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
328         flag is set.
329
330         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
331         throwing code correctly.
332
333         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
334
335 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
336
337         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
338         ftnptrs created by us, handle RGCTX_FETCH correctly.
339         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
340
341         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
342         ftnptr added by mono_aot_get_named_code ().
343
344 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
345
346         * mini-arm.c: Fix a few LLVM problems.
347
348         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
349
350 2010-01-13  Mark Probst  <mark.probst@gmail.com>
351
352         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
353         AOT compiling.
354
355 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
356
357         * jit.h, method-to-ir.c: added ability to set the policy for
358         inserting breakpoints from the break IL instruction or the
359         Debugger.Break () API call.
360
361 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
362
363         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
364         assemblies need to be eagerly loaded.
365
366 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
367
368         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
369
370 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
371
372         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
373         an argument which matches any exception.
374
375 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
376
377         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
378         optimization if the called method is gshared and marshalbyref, since gshared
379         methods can' have wrappers. Fixes #569390.
380
381         * generics.cs: Add a test.
382
383 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
384
385         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
386         callable from gdb.
387
388 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
389
390         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
391
392 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
393
394         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
395         since it is not supported in win2000.
396
397 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
398
399         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
400         error if loading an assembly fails.
401         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
402
403         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
404         if exists.
405
406         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
407         compiled methods.
408
409         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
410
411         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
412         is not supported yet.
413
414         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
415
416 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
417
418         * method-to-ir.c: All types with variant arguments must fallback to the
419         slow path. This makes cast of variant delegates work.
420
421         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
422         argument that is set to TRUE is the returned vtable slot is for a variant
423         interface. Changed a g_print + g_assert_not_reached to a g_error.
424
425         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
426         a similar fashion of generic virtual methods.
427
428 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
429
430         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
431         when cfg is null.
432
433         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
434         method using a variance aware function.
435
436         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
437
438 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
439
440         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
441         do an icall for now.
442
443 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
444
445         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
446         If LLVM decides to set the code model to Large, reset it to Default.
447
448 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
449
450         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
451         stripped binaries as well.
452
453 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
454
455         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
456         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
457
458         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
459         reg.
460
461 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
462
463         * mini.c (mini_method_compile): Extract the JIT info creation code into a
464         separate function.
465
466         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
467         as the type info to llvm.eh.selector.
468         (exception_cb): Use the type info for filling out some fields of
469         MonoJitExceptionInfo like the flags and the exception class. This is needed
470         because the LLVM produced exception handling clauses might not match the original
471         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
472
473         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
474         separate function. Add an extra argument which returns the type infos
475         corresponding to the exception clauses.
476
477         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
478         exception handling clauses.
479
480 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
481
482         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
483         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
484         to fix an AOT case.
485
486 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * mini.c (mono_compile_is_broken): Skip methods from serialization's
489         internal assembly.
490
491 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
492
493         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
494         llvm code.
495
496 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * mini.c (mini_method_compile): Verify the method before calling
499         mono_compile_create_vars as this might crash since it uses method
500         information.
501
502         Fixes #560196.
503
504 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
505
506         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
507         one case if AOTing, since the class might not be a concrete class.
508
509 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
510
511         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
512         functions which are now defined in mempool-internals.h.
513
514         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
515
516         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
517
518 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * mini.c:
521         * method-to.ir.c:
522         * mini-*.c: Properly handle generic enums.
523
524         Fixes #566294
525
526 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
527
528         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
529         in a few more places.
530
531 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
532
533         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
534         nullable parameters. Fixes #567351.
535
536 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
537
538         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
539
540 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
541
542         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
543         mono_get_generic_context_from_code () call.
544
545         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
546
547 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
548
549         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
550         needed.
551
552 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
553
554         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
555         mono_method_get_signature returns NULL. Fix #567084
556
557 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
558
559         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
560         instead of once for each module.
561
562 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
563
564         * debugger-agent.c (ss_start): Implement step over for the last sequence
565         point in methods.
566
567         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
568         have the STEP_LOC flag set.
569
570         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
571         fails. Fixes #566689.
572
573 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
574
575         * mini.c (mono_add_seq_point): New helper function.
576         (mono_save_seq_point_info): New function to save sequence point info, extracted
577         from mini_method_compile ().
578
579         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
580
581         * mini.h (MonoSeqPointInfo): New structure containing information about
582         the sequence points of a JITted method.
583         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
584         'bucket' field.
585
586         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
587         point information is stored, use a MonoSeqPointInfo structure instead of a
588         GPtrArray. For each seq point, compute a list of successor seq points.
589
590         * debugger-agent.c: Use the successor list to implement step-over more
591         efficiently: instead of single stepping until a different line/IL offset is
592         reached, place breakpoints into all successor seq points.
593
594         * mini.h: Bump AOT file format version.
595
596 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
597
598         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
599
600         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
601
602 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
603
604         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
605         build.
606
607 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
608
609         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
610         alloca as g_malloc is not signal safe.
611
612 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
613
614         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
615         VALGRIND_DISCARD_TRANSLATIONS.
616
617         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
618         checks, they are no longer needed.
619
620         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
621         a function into a sigctx which can handle function pointers.
622
623         * mini-ppc.c: Implement soft debugger support on ppc64.
624
625         * mini-ppc.c: Implement soft debugger support.
626
627 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
630
631 2009-12-17  Marek Habersack  <mhabersack@novell.com>
632
633         * mini.c (mono_get_runtime_build_info): include Mono version in
634         the returned value.
635
636         * driver.c (mono_main): VERSION is now included in the string
637         returned from mono_get_runtime_build_info()
638
639 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
640
641         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
642         signatures. Fixes #565143.
643
644         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
645
646 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
647
648         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
649
650 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
651
652         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
653         making max stack 10x smaller.
654
655 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
656
657         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
658
659 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
660
661         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
662
663 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
664
665         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
666         bigger than MONO_ARCH_MAX_FRAME_SIZE.
667
668         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
669
670         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
671
672         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
673
674         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
675         the compilation.
676
677 2009-12-14  Miguel de Icaza  <miguel@novell.com>
678
679         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
680         raise an invalid program exception.   
681
682         For other opcodes that we might not handle use a g_warning and
683         raise the exception.   Beats termination.
684
685         Fixes #561724
686
687 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
688
689         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
690
691         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
692         by merging the LLVM and !MAP_32BIT cases.
693
694 2009-12-13 Jonathan Chambers <joncham@gmail.com>
695
696         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
697         sigctx being passed in, as we have no CONTEXT available in the APC.
698
699         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
700         for now.
701
702         Code contributed under MIT/X11 license.
703
704 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
705
706         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
707         in the LLVM backend on AMD64.
708
709         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
710         FDE.
711
712         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
713
714         * mini-llvm.c: Export mono_personality for AOT.
715
716         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
717
718         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
719         implicit exception can occur.
720
721         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
722         OP_IMPLICIT_EXCEPTION instruction.
723
724         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
725
726         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
727
728         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
729         inside a protected block.
730
731         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
732         trampolines doesn't include the argument.
733
734         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
735         trampolines on amd64.
736
737         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
738         of RDI.
739
740         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
741         disabled for methods with clauses.
742
743         * mini-llvm.c: Enable support for catch clauses.
744
745         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
746         end of an LLVM compiled finally clause.
747         (mono_handle_exception_internal): Save the exception handling state in TLS
748         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
749         resume unwinding from that point.
750
751         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
752         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
753         to obtain the addresses of the exception handling regions.
754
755         * mini-llvm.c: Add beginnings of support for exception handling, currently only
756         finally clauses are supported.
757
758         * mini.c (mini_method_compile): Add support for LLVM code with exception
759         handlers.
760
761 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
762
763         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
764         proper size.
765
766 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
767
768         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
769         as a primitive type.
770
771 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
772
773         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
774         for 2 parameter sched_setaffinity in older glibc versions. Fixes
775         #564000.
776
777 2009-12-11  Marek Habersack  <mhabersack@novell.com>
778
779         * method-to-ir.c (mini_redirect_call): do not redirect the
780         InternalAllocateStr internal call if string profiling is enabled.
781
782 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
783
784         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
785         generic methods.
786
787         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
788         unwind.h header file.
789
790         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
791         newer valgrind versions seems to handle this fine.
792
793 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
794
795         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
796         on the debugger thread.
797
798 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
799
800         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
801
802         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
803
804         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
805
806         * cpu-<ARCH>.md: Make call_handler clob:c.
807
808         * mini.c: Reenable SSA for methods with clauses.
809
810         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
811         as it causes failures on x86.
812
813 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
814
815         * driver.c: Fail gracefully with --compile-all if mono_method_signature
816         returns NULL (e.g. a bad assembly).
817
818 2009-12-08  Geoff Norton  <gnorton@novell.com>
819
820         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
821         stepping out into native code.  There were issues with nested invokes
822         like .cctors.
823
824 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
825
826         * mini.c (mini_method_compile): Do the disable_llvm checks early
827         and avoid the LLVM compile pass if the checks fail.
828
829         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
830
831         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
832         LLVM optimizations don't try to remove them.
833
834         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
835         different file so the original remains.
836
837 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
838
839         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
840
841         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
842
843         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
844         support for non-inline unwind descriptors.
845
846 2009-12-07  Geoff Norton  <gnorton@novell.com>
847
848         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
849         the interrupt_count slightly differently.  Native threads were never
850         marked as resumed.
851
852 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
853
854         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
855         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
856         yet generate this info.
857
858         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
859
860         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
861         client can distinguish between intptrs and longs.
862
863 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
864
865         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
866         blob.
867
868         * aot-runtime.c (load_function): Update after the change above.
869
870         * mini.h: Bump AOT file format version.
871
872         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
873         if the delegate class is dynamic.
874
875         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
876         in gshared code too using the new rgctx info type
877         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
878
879 2009-12-04  Geoff Norton  <gnorton@novell.com>
880
881         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
882         we need to track the original suspend count so the thread properly
883         wakes up in resume_thread.
884
885 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
886
887         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
888         code.
889
890         * generics.cs: Add a test.
891
892         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
893         is 0. Simplify a lot of code using this.
894
895         * mini-trampolines.c (mono_delegate_trampoline): Call
896         mono_create_static_rgctx_trampoline () before saving the final address in
897         delegate->method_code, to avoid calling it each time a delegate is first called.
898
899         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
900         which need static rgctx trampolines.
901
902         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
903         keyed on the method+addr pair, since addr could be either the method addr or
904         an unbox trampoline in the AOT case. Fixes #560246.
905
906 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
909         place it was called before too.
910
911 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
912
913         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
914         if no security manager is present, to speed up the AOT case. Call
915         mono_class_vtable () full with raise_on_error == TRUE instead.
916
917 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
920         the local optimization passes can take its result into account. Fixes
921         #559876.
922
923         * exceptions.cs: Add a test.
924
925 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
926
927         This patch is contributed under the terms of the MIT/X11 license
928
929         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
930
931 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
932
933         * mini.h (MonoInst): Remove unused 'ssa_op' field.
934
935         * debugger-agent.c: Rework the handling of stack traces of running threads to
936         avoid crashes if compute_frames () tries to walk the stack of running thread.
937
938         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
939
940         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
941
942         * mini.h (StackFrameInfo): Add an 'lmf' field.
943
944 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
945
946         * debugger-agent.c (suspend_current): Always set really_suspended.
947
948         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
949
950         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
951
952 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
953
954         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
955         really suspended.
956
957 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
958
959         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
960
961 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * mini-trampolines.c: Fix MSVC build.
964
965 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
968
969 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
970
971         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
972         the instruction following an OP_FCOMPARE is optimized away.
973
974 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
975
976         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
977         emit_autoreg () into this arch-specific function.
978
979         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
980         code, it is no longer needed.
981
982         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
983
984         * mini.h: Bump AOT file format version.
985
986         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
987         using the sorted_code_offsets array, instead of reading it from the
988         exception debug info.
989         (load_method): Call mono_aot_find_jit_info instead of
990         decode_exception_debug_info ().
991
992         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
993         LLVM compiled as a flag.
994
995 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
996
997         * debugger-agent.c (resume_thread): Fix a warning.
998
999         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1000         generated.
1001
1002 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1005         contents to MonoAotFileInfo.
1006
1007 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1010         Put all binary data into a giant blob, similarly to the way .net assemblies
1011         store binary data. Emit offset tables in a compact form to reduce their size.
1012
1013         * mini.h: Bump AOT file format version.
1014
1015         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1016         places.
1017
1018         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1019         avoid linear searches at runtime.
1020
1021         * aot-runtime.c (find_symbol): Update this to use the hash.
1022
1023         * mini.h: Bump AOT file format version.
1024
1025 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1028         container.
1029
1030         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1031         too.
1032
1033         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1034         the distribution of got slot types.
1035
1036         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1037
1038         * method-to-ir.c: Add support for generating explicit null checks.
1039
1040 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1043         on a random thread if possible.
1044
1045         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1046         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1047         correctly.
1048
1049         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1050         regs. Pass the real size of the regs array to mono_unwind_frame ().
1051
1052         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1053         ones instead.
1054
1055 2009-11-24  Geoff Norton  <gnorton@novell.com>
1056
1057         * mini-darwin.c: Work around apple bug rdar://7209349  See
1058         http://openradar.appspot.com/7209349 for details.  Synopsis,
1059         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1060         never been initialized before.
1061
1062 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1065
1066         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1067
1068 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1071         OP_SHL_IMM is not 32 bit.
1072
1073 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1076
1077 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1078
1079         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1080         encountered.
1081
1082         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1083         > 0 since some threads can resume if their resume_count is > 0.
1084         (invoke_method): Avoid reading freed memory.
1085
1086         * debugger-agent.c (process_suspend): Extract the suspend code from
1087         process_single_step_inner () to a separate function. Rework the code to prevent
1088         races between this function and thread interrupts.
1089
1090         * debugger-agent.c (suspend_current): Check the resume_count field instead
1091         of resume_one so suspends+resumes during single threaded invokes work
1092         correctly.
1093
1094 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1097         to make the generated code smaller.
1098
1099         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1100         sequence generated by recent LLVM versions.
1101
1102         * mini-llvm.c: Add support for a few simple cases which weren't supported
1103         before.
1104
1105         * mini-trampolines.c (mono_magic_trampoline): Don't call
1106         mono_arch_get_vcall_slot () when llvm is enabled.
1107
1108         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1109
1110         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1111         into a new function called common_call_trampoline () which is used by the
1112         llvm vcall trampoline as well.
1113
1114         * debugger-agent.c: Implement single threaded invokes.
1115
1116         * debugger-agent.c: Revert change which broke the agent on linux.
1117
1118         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1119         #557606.
1120
1121         * generics.cs: Add a test.
1122
1123 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * debugger-agent.c: Fix the cygwin build.
1126
1127 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * cprop.c: Remove this unused file.
1130
1131 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1134         #557262.
1135
1136         * basic.cs: Add a test.
1137
1138 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1139
1140         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1141         in one more place.
1142
1143 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1146         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1147         it. Use this flag to control llvm related code paths instead of #ifdef
1148         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1149         AOT code.
1150
1151         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1152
1153         * mini.h: Bump AOT file format version.
1154
1155         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1156         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1157
1158         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1159         was used as an assembly filter.
1160
1161 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1162
1163         * unwind.c: Fix support for ppc.
1164
1165         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1166         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1167
1168 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1171         port.
1172         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1173         added by the ps3 changes.
1174
1175 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * mini-gc.c: Resurrect this, so at least it compiles.
1178
1179         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1180
1181 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1184         create_event_list () so assembly filters can be used.
1185
1186         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1187         from the LMF.
1188
1189 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1190
1191         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1192         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1193         is disabled.
1194
1195         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1196         classes for char/bool too.
1197
1198         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1199
1200         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1201         used.
1202
1203         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1204         Fix warnings.
1205
1206 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1207
1208         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1209         
1210         Code contributed under MIT/X11 license.
1211
1212 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1213
1214         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1215         threads in native code work.
1216
1217         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1218         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1219         version.
1220
1221 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1222
1223         * debugger-agent.c: Implementation for Windows platform.
1224
1225         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1226         primitives. Use SEH to implement breakpoints and single stepping.
1227
1228         * mini-x86.h: Enable soft debugger on Windows.
1229
1230         Code contributed under MIT/X11 license.
1231
1232 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1235         under XEN. Fixes #522894.
1236
1237         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1238
1239         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1240         interface calls in LLVM AOT code.
1241
1242         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1243         is found.
1244
1245         * mini-llvm.c: Add support for OP_VPHI.
1246
1247         * objects.cs: Add a test.
1248
1249 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1252         this is called on the debugger thread.
1253
1254 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * mini-llvm.c: Add soft-float support.
1257
1258         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1259         FCALL which returns an R4.
1260
1261         * driver.c (mono_main): Add a missing '\n'.
1262
1263         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1264         platforms which doesn't support the LLVM IMT trampoline.
1265
1266 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1269
1270         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1271
1272         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1273         virtual calls.
1274
1275         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1276
1277 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1280         Instead of emitting a method_order table, sort the contents of the code_offsets
1281         table and do a binary search in the sorted table. The previous approach doesn't
1282         work with LLVM which emits methods in a arbitrary order.
1283
1284         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1285         in the .eh_frame section in ELF files.
1286
1287         * mini.h: Bump corlib file format version.
1288
1289         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1290
1291         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1292         LDMIA->LDM macro name change.
1293
1294 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1295
1296         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1297         x86.
1298
1299         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1300         SVN.
1301
1302         * aot-compiler.c: Ditto.
1303
1304         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1305         &align to mini_type_stack_size_full ().
1306
1307         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1308
1309         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1310
1311 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * mini-arm.c: Compute the stack space used by arguments using
1314         mini_type_stack_size_full ().
1315
1316 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * optflags-def.h: Remove dead TREEPROP optimization.
1319
1320 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1323
1324         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1325
1326 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * driver.c (mono_jit_parse_options): New public API function to parse options
1329         as done by the runtime executable.
1330
1331         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1332         when handling named arguments.
1333
1334 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1337         for passing small vtypes in registers, make the CallInfo structures more
1338         similar to the code on the other platforms.
1339
1340         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1341         the code in the prolog requires it.
1342
1343 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1346         (koush@koushikdutta.com).
1347
1348         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1349         where the thunk memory should be allocated from. Fixes appdomain unloading
1350         on arm.
1351
1352 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1355         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1356
1357 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1360         AOT, as it is not implemented yet.
1361
1362         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1363
1364 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1365
1366         * debugger-agent.c: Fix windows build.
1367
1368 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1371         after the client connects/disconnects.
1372
1373         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1374         when an exception of a given type is thrown.
1375
1376         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1377         only on an uncaught exception.
1378
1379         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1380
1381         * debugger-agent.c: Add a 'launch' option.
1382
1383 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1384
1385         * debugger-agent.c: Add a 'timeout' option.
1386
1387 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1390         the JDWP agent.
1391
1392 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * debugger-agent.c (set_breakpoint): Emit a log message.
1395
1396 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * mini-arm.c: Fix the arm build.
1399
1400 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1401
1402         * aot-compiler.c: don't leak the value returned from
1403         mono_type_full_name().
1404
1405 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1406
1407         * debugger-agent.c: defer including mono-mutex.h until we know the
1408         agent is supported.
1409
1410 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1411
1412         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1413         of pthreads directly.
1414
1415         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1416         exception handlers. Pass info argument.
1417
1418         * mini.h: Adjust signatures of soft debugger functions to pass void*
1419         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1420
1421         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1422         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1423         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1424         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1425
1426         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1427
1428         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1429         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1430         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1431         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1432
1433         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1434
1435         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1436
1437         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1438
1439         * mono-semaphore.h: Skeleton implementation for Windows.
1440
1441         Code contributed under MIT/X11 license.
1442
1443 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1444
1445         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1446
1447         Code contributed under MIT/X11 license.
1448
1449 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1450
1451         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1452
1453         Code contributed under MIT/X11 license.
1454
1455 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1458         debug info to 100 because 10 still slows down gdb too much.
1459
1460         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1461         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1462         them in the wrappers.
1463
1464 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1467
1468         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1469
1470         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1471         function mono_aot_get_array_helper_from_wrapper ().
1472
1473         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1474         array helper methods.
1475
1476 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1477
1478         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1479         the value was loaded from memory.
1480
1481         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1482         the value was loader from there.
1483
1484         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1485         without constant swizzle.
1486
1487 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1488
1489         * mini-amd64.c: Put soft debugger functions behind a
1490         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1491
1492         * mini-amd64.h: disable the soft debugger in windows.
1493
1494         Code contributed under MIT/X11 license.
1495
1496 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1497
1498         * mini-x86.c: Put soft debugger functions behind a
1499         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1500
1501         Code contributed under MIT/X11 license.
1502
1503 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1504
1505         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1506         to mono_arch_find_jit_info_ext.
1507
1508         Code contributed under MIT/X11 license.
1509
1510 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1513
1514         * debugger-agent.c: Add support for filtering events by assemblies.
1515
1516         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1517         the agent is not enabled.
1518
1519 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1520
1521         * exceptions-x86.c: hopefully last change to fix the windows build.
1522         This one courtesy of Jonathan Chambers.
1523
1524 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1525
1526         * debugger-agent.c: remove unused function.
1527
1528 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1529
1530         * debugger-agent.c: add #ifdefs for a few header files.
1531         * mini-x86.h: disable the soft debugger in windows.
1532         Step 1 of 2 to make this compile on windows with gcc.
1533
1534 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1537         as it breaks the build.
1538
1539 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1540
1541         Merge the soft debugger branch.
1542
1543         * debugger-agent.h debugger-agent.c: New files containing the soft
1544         mode debugger module.
1545
1546         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1547         at the appropriate locations.
1548
1549         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1550         opcode.
1551
1552         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1553         enable/disable single stepping.
1554
1555         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1556         which returns all information in a StackFrameInfo structure, and can handle the
1557         LMF frames added by the debugger.
1558
1559         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1560         about an LMF frame.
1561
1562         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1563         walker function which works on a specific thread and passes a StackFrameInfo
1564         structure to its callback.
1565
1566         * mini.c (mini_init): Initialize the debugger agent.
1567
1568         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1569
1570         * mini-ops.h: Add OP_SEQ_POINT opcode.
1571
1572         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1573         arguments to the debugger agent.
1574
1575 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1578         speed things up.
1579
1580         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1581
1582         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1583
1584         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1585
1586         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1587         if needed.
1588         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1589         sets the IMT argument and makes a virtual call.
1590
1591         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1592
1593 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1596         the windows build.
1597
1598 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1601         runtime. Fixes #551228.
1602
1603 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1606
1607         * basic.cs: Add a test.
1608
1609         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1610         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1611         CONSTRAINED. Fixes #550964.
1612
1613         * generics.cs: Add a test.
1614
1615 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1616
1617         * mini-posix.c (add_signal_handler): Use
1618         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1619
1620 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1621
1622         Contributed under the terms of the MIT/X11 license by
1623         Jerry Maine <crashfourit@gail.com>.
1624
1625         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1626         sse4a for simd intrinsics.
1627
1628         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1629         sse4a for simd intrinsics.
1630
1631 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1634         instead of inst_p1 which is not the same on ILP32 platforms.
1635
1636 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1639         not the mscorlib one before calling mono_get_lmf_addr.
1640
1641         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1642         of the ip to the LMF.
1643
1644         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1645         immediate in the op->op_imm optimization.
1646
1647         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1648         understand. VTypes now work, but are not abi compliant, as they are
1649         split into 4 byte parts instead of 8.
1650         (emit_memcpy): Fix the unrolled case to work on the PS3.
1651
1652         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1653
1654         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1655         the default when static linking.
1656
1657         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1658
1659         * aot-compiler.c: Add an autoreg option to automatically register
1660         statically linked aot modules using ELF .ctors.
1661
1662         * genmdesc.pl: Add __ppc64__ to allowed defines.
1663
1664 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1665
1666         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1667         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1668
1669 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1670
1671         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1672
1673 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1676         which will contain the domain where the method was found.
1677
1678         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1679         mini_jit_info_table_find ().
1680
1681         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1682
1683         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1684
1685 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1686
1687         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1688         set, its not supported yet.
1689
1690 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1693         iface wrapper is not found.
1694         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1695
1696 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1699         which have a different name.
1700
1701         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1702         wrappers and Array.GetGenericValueImpl ().
1703
1704         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1705         because of the change above.
1706
1707         * generics.cs: Add a test for full aot + generic array ifaces.
1708
1709 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1710
1711         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1712         that hides the previous one.
1713
1714 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1717         marshalled. Fixes #541623.
1718
1719 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1720
1721         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1722
1723 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1724
1725         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1726
1727 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1728
1729         * mini-posix.c (sigprof_signal_handler):
1730         Implemented support for building stat call chans in different ways.
1731
1732 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1733
1734         * mini-exceptions.c (mono_find_jit_info):
1735         Also check that a jit info has been found (fixes a profiler crash).
1736
1737 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1738
1739         * mini.c (mono_codegen):
1740         Call mono_profiler_code_buffer_new with correct code address.
1741
1742 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * driver.c (mono_main): Change the date in the copyright.
1745
1746 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1747
1748         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1749         allocator in shared generic code for open classes, because we
1750         can't get those classes' vtables.  We need to make managed
1751         allocators not depend on the vtable at compile-time to solve this.
1752
1753 2009-10-13  Martin Baulig  <martin@ximian.com>
1754
1755         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1756         `const guint8 *trampoline' argument; send both the old and the new
1757         notification.
1758
1759 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1762         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1763         (can_marshal_struct): Skip structures with auto layout.
1764
1765         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1766
1767 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1770         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1771         a variable to hold the stack slot used by the int<->float conversion opcodes.
1772
1773         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1774
1775 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1778         when using full-aot.
1779
1780 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1783         each instance of Comparer<T>.
1784
1785         * generics.cs: Add a new test.
1786
1787 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * driver.c (parse_debug_options): Add a 'gdb' option.
1790
1791         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1792
1793         * image-writer.c: Add support for emitting the image into a memory buffer.
1794
1795         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1796
1797         * aot-compiler.c: Add support for registering debug info with GDB using the
1798         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1799         MONO_XDEBUG to 'gdb'.
1800
1801 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1804         gdb mode.
1805
1806 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1809         can be used to set breakpoints in gdb.
1810
1811         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1812         segment to an absolute address.
1813
1814 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1815
1816         * method-to-ir.c: Use the managed array allocator method if
1817         available.
1818
1819 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1820
1821         * aot-compiler.c : Fix the MSVC builds
1822
1823         Code is contributed under MIT/X11 license.
1824
1825 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1828         avoid registering 1 symbol file per method with gdb.
1829
1830 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * mini-sparc.c: Fix the handling of enums with base type long.
1833
1834         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1835
1836         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1837         instead of using type->data.klass as the later doesn't work with generics.
1838
1839 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1840
1841         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1842         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1843         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1844         works differently now and we don't handle it in the JIT anymore.
1845
1846         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1847         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1848         the Thread class split.
1849
1850 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * driver.c: Don't run tests with the obsolete treeprop optimization.
1853
1854         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1855         variable volatile. Fixes #541577.
1856
1857         * basic-calls.cs: Add a new test.
1858
1859         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1860
1861 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1864         work/required with recent iphone sdk versions.
1865
1866         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1867         structures.
1868
1869         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1870         in the VCALL decomposition code.
1871
1872 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1875
1876         * basic.cs: Add a test.
1877
1878         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1879         generic invokes.
1880
1881         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1882         searches all the domains of the current thread.
1883
1884         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1885
1886 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1889         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1890
1891         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1892         for non-jit trampolines.
1893
1894         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1895
1896         * aot-compiler.c (add_wrappers): Ditto.
1897
1898         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1899         the size of the param area used by dyn_call to 6 which covers the majority of
1900         methods.
1901
1902         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1903
1904         * mini-arm.c: Implement support for passing/receiving
1905         longs and receiving floats in the dyn_call code.
1906
1907         * mini-amd64.c: Implement support for receiving vtypes in registers in
1908         the dyn_call code.
1909
1910         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1911         the dyn_call code.
1912
1913 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * mini-arm.c (get_call_info): Return more precise information in
1916         ArgInfo->regtype.
1917         (dyn_call_supported): Use the information in CallInfo.
1918
1919         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1920
1921         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1922         code.
1923
1924         * mini-arm.c: Update after the dyn_call api changes.
1925
1926         * mini.c (mini_create_jit_domain_info): Register a destructor function
1927         for the runtime_invoke_hash.
1928
1929         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1930         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1931         this function.
1932         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1933         (dyn_call_supported): Simplify this by using get_call_info ().
1934         (mono_arch_dyn_call_free): New destructor function.
1935
1936         * generics.cs: Remove a printf.
1937
1938         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1939
1940         * mini-arm.c: Add support for enum return values and passing a few arguments
1941         on the stack.
1942         
1943         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1944         dyn invoke.
1945
1946         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1947
1948         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1949         the dynamic invoke wrappers.
1950
1951         * mini-arm.c: Implement OP_DYN_CALL for arm.
1952
1953         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1954         supported by the dynamic runtime invoke wrapper.
1955
1956         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1957         runtime invoke wrapper.
1958
1959         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1960         if possible when running with full-aot.
1961
1962         * mini-ops.h: Add OP_DYN_CALL opcode.
1963
1964         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1965         with dynamic arguments lists similar to libffi.
1966
1967 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1970         
1971         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1972         to NEWARR.
1973
1974         * iltests.il.in: Add a new test.
1975         
1976 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1977
1978         * aot-compiler.c (add_generic_instances): Add more instances of
1979         GenericEqualityComparer.
1980
1981 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1982
1983         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1984
1985 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1986
1987         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1988         comments on some functions that now can fail.
1989
1990 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1991
1992         * Makefile.am: Add Info.plist to EXTRA_DIST
1993
1994 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1997         static synchronized wrappers. Fixes #539500.
1998
1999 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2000
2001         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2002         properly.
2003
2004 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2007         lmf before calling filter clauses as well. Fixes #539550.
2008
2009         * exceptions.cs: Add a test.
2010         
2011 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2012
2013         * aot-compiler.c (add_generic_class): Add instances of
2014         Array.GetGenericValueImpl as well.
2015
2016         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2017         can be tested too.
2018
2019         * generics.cs: Add a fullaot linq test.
2020
2021 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2024         reg r1 on arm.
2025
2026 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2027
2028         * mini-trampolines.c (mono_delegate_trampoline) : Call
2029           mono_cominterop_get_invoke if the delegate target object
2030           is a COM object.
2031
2032         Code is contributed under MIT/X11 license.
2033
2034 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2035
2036         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2037         internal call is defined outside platform code. Reduce code 
2038         duplication with existing [Method|Field]AccessException
2039
2040 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2041
2042         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2043         if the return value is a small struct passed on regs.
2044
2045 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2048
2049         * mini-codegen.c: Enable the cpu description validation for arm.
2050
2051 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2052
2053         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2054         test which depends on structs to objects.cs.
2055         
2056         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2057         require object model related stuff working.
2058
2059         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2060
2061         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2062
2063         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2064         against the instruction metadata in mini-ops.h. amd64 only for now.
2065
2066         * mini-ops.h: Fix some instruction descriptions.
2067
2068         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2069         unused instructions.
2070
2071 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * exceptions.cs: Add a new test.
2074
2075 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2076
2077         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2078
2079 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2082         skip empty phi opcodes.
2083         
2084         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2085         correctly by zero extending after loads. Skip methods containing calls
2086         to the monitor enter/exit trampolines.
2087
2088         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2089         when calling mono_thread_force_interruption_checkpoint ().
2090
2091         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2092
2093         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2094         64 bit thunks.
2095         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2096
2097         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2098         bootstrap could run.
2099
2100 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2101
2102         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2103
2104 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2107         of the method to
2108         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2109         LLVM might be very short.
2110
2111         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2112         in OP_THROW/RETHROW.
2113
2114         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2115         alignment on osx.
2116
2117 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2118
2119         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2120         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2121         LLVM might be very short.
2122
2123 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2124
2125         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2126         the alignment for the value of sp.
2127
2128 2009-09-01  Geoff Norton  <gnorton@novell.com>
2129
2130         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2131         managed wrappers in full aot.
2132
2133 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2134
2135         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2136
2137 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2140
2141 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2144
2145         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2146         saved info.
2147
2148         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2149
2150         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2151         depend on the info MonoMethodHeader which could be missing in IL stripped
2152         assemblies.
2153
2154 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2157         they are only 4 byte aligned.
2158
2159 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2162         was done previously, since using SP causes too many problems.
2163
2164         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2165         frames without a frame pointer works.
2166
2167         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2168         global register in methods with calls, since the calls can go through
2169         a static rgctx trampoline which doesn't save it.
2170
2171 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2172
2173         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2174
2175 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2178
2179 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2180
2181         * method-to-ir.c: Fix warnings for uninitialized variables.
2182
2183 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2184
2185         * mini-exceptions.c:
2186         * aot-compiler.c: Fix printf warnings.
2187
2188 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2191         Add GetGenericValueImpl<string>.
2192         
2193         * aot-compiler.c (add_generic_instances): Add instances of
2194         GenericEqualityComparer<T> for primitive types. Only emit the array
2195         wrappers into the mscorlib image.
2196
2197 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2200         the methods_loaded array using amodule->info->nmethods.
2201
2202         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2203         (MONO_AOT_FILE_VERSION): Bump this.
2204
2205         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2206         to work.
2207
2208         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2209         MonoJitInfo doesn't belong to its methods aot image.
2210
2211 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2214
2215         * mini-arm.c: Fix warnings.
2216         
2217         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2218
2219         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2220         supports it.
2221
2222 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2225         avoid clobbering IP.
2226
2227         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2228         hold the trampoline argument, so its initial value is available during
2229         debugging.
2230
2231 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2232
2233         * exceptions-arm.c:
2234         * exceptions-hppa.c:
2235         * mini.c:
2236         * exceptions-s390x.c:
2237         * exceptions-mips.c:
2238         * exceptions-ppc.c:
2239         * exceptions-sparc.c:
2240         * exceptions-alpha.c:
2241         * aot-runtime.c:
2242         * mini-trampolines.c:
2243         * exceptions-x86.c:
2244         * exceptions-s390.c: add and use #define's instead of sizeof()
2245         for MonoJitInfo and MonoJitInfoTable.
2246
2247 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2248
2249         * tramp-arm.c:
2250         * tramp-amd64.c:
2251         * tramp-ppc.c:
2252         * tramp-x86.c: use a #define instead of sizeof() for a few
2253         structures that use a zero-length array.
2254
2255 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2258         case when the method is dynamic. Fixes #529238.
2259
2260 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2261
2262         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2263         of asserting when a method is JIT compiled in full-aot mode.
2264
2265 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2266         
2267         Contributed under the terms of the MIT/X11 license by
2268         Jerry Maine <crashfourit@gail.com>.
2269         
2270         * fixed wrong dates in changelog.
2271
2272 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2273         
2274         Contributed under the terms of the MIT/X11 license by
2275         Jerry Maine <crashfourit@gail.com>.
2276
2277         * basic-simd.cs: added test for packed double square root.
2278         * cpu-amd64.md: added opcode info for packed double square root.
2279         * cpu-x86.md: added opcode info for packed double square root.
2280         * mini-ops.h: added IR opcode for packed double square root.
2281         * mini-x86.c: added IR to native translation code for packed double square root.
2282         * mini-amd64.c: removed todo for packed double square root.
2283         * simd-intrinsics.c: added method to IR opcode converstion for
2284         packed double square root.
2285
2286 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2287
2288         Contributed under the terms of the MIT/X11 license by
2289         Jerry Maine <crashfourit@gail.com>.
2290
2291         * mini-amd64.c: Added a change to help tell the difference as 
2292         to what perpose the xmm register is being used--mainly to help
2293         with debuging.
2294         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2295         (one used for special cases) xmm registers for both fp
2296         and simd ops. Added define to turn on new feature in the regalloc
2297         that allows fp and simd ops to share the xmm regs happily.
2298         * codegen.c: Added code to detect for which perpose an xmm reg is
2299         being used (fp or simd) and to translate back and forth to the
2300         correct logical reg bank (fp or simd) for 'spill load's.
2301
2302 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2303
2304         Contributed under the terms of the MIT/X11 license by
2305         Jerry Maine <crashfourit@gail.com>.
2306
2307         * basic-simd.cs: Added tests for stressing the regalloc when running with
2308         16 simd regs and when simd and fp ops share the same reg bank.
2309
2310 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2311
2312         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2313         in shared generic code, we might have to look up the class in the
2314         RGCTX.  If we use the class directly, compute its GC descriptor.
2315
2316 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2317
2318         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2319
2320 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2321
2322         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2323         check for errors. Fixed the case when the class with the Main
2324         method is broken.
2325
2326 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2327
2328         Contributed under the terms of the MIT/X11 license by
2329         Jerry Maine <crashfourit@gail.com>.
2330
2331         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2332
2333 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2336
2337 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2338
2339         * method-to-ir.c: Fix naming of stelem and ldelem.
2340
2341 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * driver.c (main_thread_handler): Check that the assembly loaded
2344         matches the filename when doing AOT.
2345
2346 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2347
2348         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2349         call it anymore.
2350
2351         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2352         utils/mono-sigcontext.h).
2353
2354         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2355         #ifdef.
2356
2357 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2358
2359         * mini.c (mono_codegen):
2360         Call profiler hook to keep track of method code buffers.
2361
2362 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2363
2364         * method-to-ir.c: Invoke write barriers for the
2365         Interlocked.(Compare)Exchange JIT intrinsics.
2366
2367 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2368
2369         * Makefile.am (version.h): Fix issues when built out of tree.
2370         Remove some redundant 'grep's piped through 'sed's.
2371
2372 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2373
2374         This patch is contributed under the terms of the MIT/X11 license
2375
2376         * mini-ppc.c (mono_arch_output_basic_block):
2377         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2378         for bits 32-47 with signed load/store diplacements for bits
2379         48-63.  Use prefered base/offset order for indexed form.
2380         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2381         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2382         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2383         OP_LOADI2_MEMBASE): Same.
2384         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2385         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2386         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2387         indexed form.
2388         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2389         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2390         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2391         OP_LOADI1_MEMINDEX): Same
2392         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2393         OP_STORER8_MEMINDEX): Same
2394         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2395         computations.
2396         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2397         for bits 32-47 with signed load/store diplacements for bits
2398         48-63.  Use prefered base/offset order for indexed form.
2399
2400 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2401
2402 This patch is contributed under the terms of the MIT/X11 license
2403
2404         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2405         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2406         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2407         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2408         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2409         cfg->stack_usage to avoid size warnings.
2410         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2411         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2412         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2413         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2414         to convert.
2415         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2416         after code varible is initialized.
2417         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2418         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2419         (mono_arch_emit_epilog): 
2420         Move Use ppc_load32 for cfg->stack_usage to avoid size
2421         warnings.
2422
2423 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2424
2425         * method-to-ir.c: The write barrier doesn't do the store anymore,
2426         so we have always to emit it.  Also, emit the wbarrier after the
2427         store.
2428
2429 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2432         for argument count 3 too.
2433
2434 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2435
2436         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2437         the caller handle the exceptions.
2438         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2439         method. Fixes #524498.
2440
2441 2009-07-22  Geoff Norton  <gnorton@novell.com>
2442
2443         * mini-exceptions.c: Fix build on ia64.
2444
2445 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2446
2447         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2448         barriers.
2449
2450 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2453         code.
2454
2455 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2456
2457         * basic-simd.cs (Main): Pass args to the test driver.
2458
2459 2009-07-20  Geoff Norton  <gnorton@novell.com>
2460
2461         * mini-x86.h: Fix the x86 version guards to use Apple's
2462         properly defined macros.
2463
2464 2009-07-20  Geoff Norton  <gnorton@novell.com>
2465
2466         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2467         aligned access.
2468
2469 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2470
2471         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2472         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2473         the information which is needed for invokes, so only one locking+hash table
2474         lookup is needed.
2475
2476         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2477         
2478         * aot-compiler.c (add_generic_instances): Emit instances of 
2479         GenericComparer<T> for primitive types.
2480
2481 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2482
2483         * mini-posix.c: Fix linux build.
2484
2485 2009-07-19  Geoff Norton  <gnorton@novell.com>
2486
2487         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2488         mono_gdb_render_native_backtraces
2489         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2490         so we implement the sane semantics to the runtime here
2491         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2492         so we need to call it differently (mono_gdb_render_native_backtraces)
2493         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2494         here for default implementations.
2495         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2496         support Apple's weird syscall (SYS_fork) implementation and not busy
2497         loop in abort() on native crashes on OSX anymore.
2498
2499 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2500
2501         * aot-runtime.c (load_method): Change the handling of the
2502         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2503         are used.
2504
2505         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2506
2507 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2510         seems to break the aot tests.
2511         
2512         * mini.c (mono_patch_info_equal): Fix the handling of 
2513         MONO_PATCH_INFO_RGCTX_FETCH.
2514
2515 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2518
2519         * mini.c (mono_patch_info_hash): Fix the handling of 
2520         MONO_PATCH_INFO_INTERNAL_METHOD.
2521         (mono_patch_info_equal): Ditto.
2522
2523 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2526         in a few places.
2527         
2528         * mini-llvm.c: Add some infrastructure for AOT support.
2529
2530 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini-llvm-cpp.c: Update to the latest llvm api.
2533         
2534         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2535         option to false to prevent llvm from installing signal handlers which
2536         trip up the gc.
2537         
2538 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2539
2540         * cpu-x86.md:
2541         * cpu-amd64.md: Revert previous change as those instructions
2542         take 2 separate arguments. Remember to read the arch docs more
2543         carefully next time.
2544
2545 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2548
2549 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2550
2551         * mini-ppc.c: exploit multiple load/store units if available (rest of
2552         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2553         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2554
2555 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2556
2557         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2558         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2559
2560 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * cpu-x86.md: Fix missing clobbering from trancendental simd
2563         ops.
2564
2565         * cpu-amd64.md: Same.
2566
2567 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2568
2569         Contributed under the terms of the MIT/X11 license by
2570         Jerry Maine <crashfourit@gail.com>.
2571
2572         * basic-simd.cs: Added tests for single and doulble indexers.
2573
2574         * cpu-amd64.md: Added simd opcode information.
2575
2576         * mini-amd64.c: Added IR to native simd generation code.
2577         Added simd register names and function that returns them.
2578
2579         * mini-amd64.h: Added marcos to turn on simd code compilation in
2580         amd64. Added max simd register count marco. Added caller/callee
2581         register mask marcos. Added marcos to use simd register bank.
2582
2583         * mini.h: Added helper marco for shufling dwords and simple
2584         floats.
2585
2586 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2589
2590         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2591
2592         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2593         the length of the native code as well.
2594
2595         * basic-simd.cs: Add a test for #521662.
2596
2597 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2598
2599         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2600
2601 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2602
2603         * mini.c: Register function for getting the IP from a signal
2604         context with metadata.
2605
2606 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2609         call a generic class init trampoline if needed. Fixes #519336.
2610
2611         * generics.cs: Add a test.
2612         
2613 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2614
2615         * method-to-ir.c: When doing a call which might be remote from
2616         shared generic code to other shared code with open type arguments,
2617         get the remoting invoke wrapper from the RGCTX and do an indirect
2618         call to it.
2619
2620 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2623         after the unbox trampoline in the full-aot case.
2624
2625 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2626         
2627         * mini.c: Move initialization of jit_mutex before debugger initialization
2628         
2629         to avoid crashes.
2630         
2631         
2632         * Info.plist: added Info.plist and link flag to enable the mono executable
2633         to access other processes. Requires codesigning of the executable to work.
2634         
2635         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2636         
2637         compile on OS X.
2638         
2639
2640 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2643
2644 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2647         when the generic instance is an instantiation of a subclass of the
2648         methods class. Fixes #517166.
2649
2650 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2651
2652         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2653         code.
2654
2655         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2656         AOTed code.
2657
2658         * CMakeLists.txt: Add minimal support for installation.
2659
2660 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2663         determine whenever a method is directly callable to a separate function.
2664
2665         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2666         needed ones as a result of the previous change.
2667
2668         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2669         type of register arrays.
2670
2671         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2672         type of register arrays.
2673
2674 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2675         
2676         Contributed under the terms of the MIT/X11 license by
2677         Jerry Maine <crashfourit@gail.com>.
2678
2679         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2680
2681 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2684
2685 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2686
2687         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2688         dump of structure return value. Fix some formatting.
2689         * cpu-s390x.md: Fix lengths of instruction sequences.
2690         * mini-s390.c: Minor formatting changes.
2691
2692 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2693
2694         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2695         Use sigaction on freebsd as well.
2696
2697 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2700         uses #ifdef on it.
2701         
2702         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2703
2704 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2705
2706         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2707
2708 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2709
2710         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2711
2712 2009-06-20  Martin Baulig  <martin@ximian.com>
2713
2714         * debug-mini.c
2715         (MonoDebuggerThreadFlags): New enum typedef.
2716         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2717         (mono_debugger_thread_created): Added `gpointer func' argument;
2718         initialize the new `thread_flags' field.
2719
2720 2009-06-18  Martin Baulig  <martin@ximian.com>
2721
2722         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2723         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2724
2725         * debug-debugger.c
2726         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2727         flag in `MONO_DEBUGGER__info.runtime_info'.
2728
2729         * driver.c
2730         (mono_main): Call mini_debugger_set_attach_ok() if generics
2731         sharing is disabled.
2732
2733 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * aot-compiler.c (add_wrappers): Fix a warning.
2736
2737         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2738         the ppc load/store macro changes.
2739
2740 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2743
2744         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2745         not just the got symbol.
2746
2747         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2748         on ppc.
2749
2750         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2751         ppc.
2752         
2753         * aot-compiler.c: Remove some fixmes.
2754
2755         * driver.c (mono_main): Print a helpful message when cross-compiling.
2756
2757         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2758
2759         * method-to-ir.c (initialize_array_data): Do the optimization if the
2760         target byte order is little endian, instead of the host byte order.
2761
2762         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2763         wrappers into the mscorlib image, Emit a unique plt symbol for each
2764         image, emit symbols for plt entries.
2765
2766         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2767         a .size directive.
2768         
2769 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * aot-compiler.c (add_wrappers): Avoid calling 
2772         mono_marshal_get_type_info () since it can assert for some types.
2773
2774         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2775         ldtoken are used inside wrappers.
2776
2777         * helpers.c: Add support for prefixing tools with the arch name.
2778
2779         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2780         quantities when using ilp32.
2781
2782         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2783         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2784
2785         * image-writer.c: Use .long on ilp32.
2786
2787         * aot-compiler.c: Use 32 bit loads on ilp32.
2788         
2789 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2792
2793         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2794
2795         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2796
2797         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2798         second got slot of every aot image.
2799         
2800         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2801         aot on platforms with function pointers.
2802
2803         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2804         support for aot/full aot on ppc/ppc64.
2805         
2806         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2807         arguments which are needed on ppc.
2808
2809         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2810         argument.
2811
2812         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2813         
2814         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2815
2816         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2817
2818         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2819
2820         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2821
2822 2009-06-17  Geoff Norton  <gnorton@novell.com>
2823
2824         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2825
2826 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2829         to control whenever the dwarf writer is in xdebug or aot mode.
2830         (emit_class_dwarf_info): Use a separate abbrev for structures without
2831         children.
2832
2833         * aot-compiler.c: Pass the appending parameter to 
2834         mono_dwarf_writer_create ().
2835
2836         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2837         falls through to its next bblock. Fixes #513931.
2838
2839         * iltests.il: Add a test.
2840
2841         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2842         infor even if emit_line is FALSE, as the apple linker seems to require it.
2843
2844         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2845
2846         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2847         gcc does.
2848         (emit_fde): Ditto.
2849
2850 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2853         mips build.
2854
2855 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2858         'has_call_handler' fields.
2859
2860         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2861
2862         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2863         first bblock if not needed. Fixes #512790.
2864         
2865 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2868         
2869         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2870         wrappers.
2871
2872         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2873         remoting-invoke-with-check wrappers, which are not needed when running with
2874         full-aot, since it doesn't support remoting.
2875         
2876 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2879
2880         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2881         method info, it is not used anymore.
2882
2883         * mini.h: Bump AOT file format version.
2884         
2885         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2886         word smaller.
2887
2888         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2889         change above.
2890         
2891         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2892
2893         * mini.h: Bump AOT file format version.
2894         
2895 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2898         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2899         iphone.
2900
2901         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2902         of CKFINITE and FBGE for VFP.
2903
2904 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * aot-compiler.c: Don't align code to 16 bytes on arm.
2907         
2908         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2909         before the methods they belong to.
2910
2911         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2912         the full-aot case if possible, since the trampoline will be called right 
2913         away.
2914
2915         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2916         trampolines to 1024 after the change above.
2917
2918         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2919         trampoline to save 8 bytes per trampoline.
2920
2921         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2922         change above.
2923
2924 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2925
2926         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2927
2928 2009-06-08  Martin Baulig  <martin@ximian.com>
2929
2930         * debug-mini.c
2931         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2932         (_mono_debugger_throw_exception): Don't make this static.
2933         (_mono_debugger_unhandled_exception): Likewise.
2934         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2935
2936         * debug-mini.c
2937         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2938         (_mono_debugger_throw_exception): Add function prototype.
2939         (_mono_debugger_unhandled_exception): Likewise.
2940
2941         * mini-exceptions.c
2942         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2943         arg; return the first exception handler if the exception is caught
2944         and we're running inside the debugger.
2945         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2946         improve exception handle inside runtime-invoke, check whether the
2947         exception is actually caught in the method being invoked and not
2948         by the runtime-invoke-wrapper.
2949
2950 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2951
2952         * image-writer.c: Improve support for the osx assembler.
2953
2954         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2955         support them.
2956
2957 2009-06-08  Martin Baulig  <martin@ximian.com>
2958
2959         * debug-mini.c
2960         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2961         (_mono_debugger_throw_exception): Don't make this static.
2962         (_mono_debugger_unhandled_exception): Likewise.
2963         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2964
2965         * debug-mini.c
2966         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2967         (_mono_debugger_throw_exception): Add function prototype.
2968         (_mono_debugger_unhandled_exception): Likewise.
2969
2970         * mini-exceptions.c
2971         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2972         arg; return the first exception handler if the exception is caught
2973         and we're running inside the debugger.
2974         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2975         improve exception handle inside runtime-invoke, check whether the
2976         exception is actually caught in the method being invoked and not
2977         by the runtime-invoke-wrapper.
2978
2979 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * image-writer.c (append_subsection): Don't align subsections of the
2982         debug_line section as a workaround.
2983
2984         * dwarfwriter.c: Emit line number info in the AOT case as well.
2985
2986 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2987
2988         This patch is contributed under the terms of the MIT/X11 license
2989
2990        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2991        code_len <= code_size
2992
2993 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2996
2997 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3000         invoke wrappers, we now use trampolines instead.
3001
3002 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3003
3004         * mini-darwin.c: The exception thread must not be registered with
3005         the GC.
3006
3007 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3008
3009         * mini-gc.c: Disable the code because it makes SGen crash.
3010
3011 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3014         instead of asserting.
3015
3016 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3019         output file after the code has been compiled.
3020
3021 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3024
3025 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3026
3027         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3028         entries distinction to simplify the code.
3029
3030         * mini.h: Bump AOT file format version.
3031         
3032 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3033
3034         * objects.cs: Fix the signature of one of the tests.
3035
3036         * mini.c (mini_create_ftnptr): New helper function, moved here from
3037         object.c.
3038         (mini_get_addr_from_ftnptr): Ditto.
3039         (mini_init): Install the new helpers.
3040
3041 2009-05-28  Martin Baulig  <martin@ximian.com>
3042
3043         Correctly initialize the debugger when embedding Mono.
3044
3045         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3046         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3047         see documentation in mini_debug_running_inside_mdb().
3048
3049         * debug-debugger.c
3050         (mini_debug_running_inside_mdb): New function to check whether
3051         we're running inside mdb.
3052
3053         * mini.c (mini_init): Call mini_debugger_init() if we're running
3054         inside the debugger.
3055
3056         * driver.c (mono_main): Moved the call to mini_debugger_init()
3057         into mini_init() to make this work when embedding Mono.
3058
3059         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3060         calls to mini_debugger_init().
3061
3062         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3063         mono_debugger_main() -> mini_debugger_main() and put them inside a
3064         `MONO_DEBUGGER_SUPPORTED' conditional.
3065
3066 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3067
3068         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3069         this is no longer in use.
3070         * mini.h: Same.
3071
3072 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3075
3076         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3077         methods.
3078
3079 2009-05-27  Martin Baulig  <martin@ximian.com>
3080
3081 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3082
3083         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3084         long_conv_to_r_un to 64 bits.
3085
3086         * cpu-x86.md: Increase the instruction size due to the changes.
3087
3088         * iltests.il.in: Add regression test.
3089
3090         Fixes #467201.
3091
3092 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3093
3094         * objects.cs: Move the previous test from basic.cs to here.
3095
3096 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3097
3098         * basic.cs: Add regression test for #506915.
3099
3100 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3101
3102         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3103         optimization we must check the bb of the first byte of stobj as
3104         it's the only one set in cil_offset_to_bb.
3105
3106         Fixes #506915.  
3107
3108 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * image-writer.c: Fix pointer directive on ppc64.
3111
3112 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * image-writer.c (asm_writer_emit_section_change): Avoid using
3115         .bss subsections on ppc too.
3116
3117 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3118
3119         * image-writer.c: Fix the definition of TARGET_ASM_....
3120         
3121         * image-writer.c: Fix the emission of assembler directives in the last
3122         change.
3123
3124         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3125         exception throwing code to accomodate ppc64.
3126
3127         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3128         size to work on ppc64 too.
3129
3130         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3131         too.
3132
3133         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3134         the assembler dialect instead of using platform specific defines.
3135
3136 2009-05-22  Geoff Norton  <gnorton@novell.com>
3137
3138         * mini-arm.c (get_call_info): If a structure is split between the stack
3139         and argument registers, we should not advance the stack pointer by the entire
3140         native size, but just by the amount that spilled.
3141
3142 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3145         correctly.
3146
3147 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3150         wrappers normally.
3151         
3152         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3153         methods so wrapper don't get added twice.
3154         (add_generic_instances): Don't add methods of arrays.
3155
3156         * generics.cs: Mark one test as !FULLAOT.
3157
3158 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3159
3160         * mini-x86.c (emit_move_return_value): Remove unused vars.
3161
3162 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3163
3164         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3165         decomposing 8 bytes structs into a LCALL.
3166
3167         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3168         pointer for where to store the returned regs.
3169
3170         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3171         state the concern.
3172
3173         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3174
3175 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3176
3177         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3178         without getenv.
3179
3180 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3183
3184         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3185         generics.
3186
3187 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3188
3189         * local-propagation.c (mono_local_cprop): Avoid local propagation
3190         across paired add/sub if the first instruction dest reg is it's
3191         source reg. For example:
3192
3193         int_add_imm R12 <- R12 [1] clobbers: 1
3194         int_sub_imm R42 <- R12 [1] clobbers: 1
3195
3196         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3197         maintain the math identify.
3198
3199         Fixes #505375.
3200
3201 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3202
3203         * Makefile.am: avoid going on the network just to get the revision,
3204         use git log instead
3205
3206 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3207
3208         Fixed estimate for short branches on amd64 (they were off mark, and
3209         enabling call prolog-epilog instrumentations caused assertions).
3210         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3211         estimate for the maximum length of this basic block.
3212         * mini-amd64.c:
3213         - mono_arch_emit_prolog: compute max_length for each basic block
3214           (instead of max_offset), and inflate size estimate also for entry bb
3215           in case of code instrumentation.
3216         - mono_arch_output_basic_block: get rid of "cpos" (the current
3217           estimated "position" in the code), and always use "offset" instead,
3218           which is accurate; at the beginning of the function quickly recompute
3219           max_offset for all the remaining blocks, starting from the current
3220           cfg->code_len (which is correct, and not estimated) and using the
3221           estimated block lengths computed previously.
3222
3223 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3226         functions, it is already done in the caller.
3227
3228         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3229
3230         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3231         MONO_ARCH_GSHARED_SUPPORTED define.
3232
3233         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3234
3235         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3236         function.
3237
3238 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3241         call to mono_marshal_get_rgctx_invoke ().
3242
3243         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3244         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3245         gshared use the static rgctx trampolines now.
3246         
3247         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3248         platform supports it.
3249
3250 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3253
3254         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3255
3256 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3259
3260         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3261         for ppc.
3262
3263 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3264
3265         Made it possible for mono_arch_instrument_epilog to preserve
3266         argument registers, otherwise instrumenting the "epilogue" before
3267         a tail call would clobber them.
3268         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3269         if like mono_arch_instrument_epilog but with an additional parameter
3270         that states if argument registers must be preserved.
3271         * mini.c: implemented mono_arch_instrument_epilog as a call to
3272         mono_arch_instrument_epilog_full without asking to preserve argument
3273         registers (this makes the existing code work as usual).
3274         * mini-amd64.c:
3275         - mono_arch_instrument_epilog: add parameter to transform it into
3276         mono_arch_instrument_epilog_full, and preserve argument registers
3277         when required.
3278         - mono_arch_output_basic_block, OP_TAILCALL case: call
3279         mono_arch_instrument_epilog_full.
3280         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3281         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3282         only transformed mono_arch_instrument_epilog into
3283         mono_arch_instrument_epilog_full.
3284
3285 2009-05-15  Geoff Norton  <gnorton@novell.com>
3286
3287         * mini-darwin.c: This works on arm now.
3288
3289 2009-05-14  Geoff Norton  <gnorton@novell.com>
3290
3291         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3292         embedding api.
3293
3294 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3297         label names.
3298
3299         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3300         wrappers during full aot mode correctly.
3301
3302         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3303         methods correctly.
3304
3305         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3306         mono_metadata_type_hash ().
3307
3308 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3309
3310         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3311         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3312         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3313         Removed MONO_INST_BRLABEL from the instruction flags, and the
3314         remaining code that used it, because we do not support branches inside
3315         basic blocks (and branch target labels) anymore.
3316         * Makefile.am: As part of the above cleanup, remove reference to
3317         BURG files which don't exist anymore.
3318
3319 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3322         osx.
3323
3324         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3325         to use mono_arch_throw_corlib_exception.
3326
3327         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3328         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3329
3330         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3331         domain mempool.
3332
3333         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3334
3335         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3336         for the got to make debugging easier and to avoid confusing it with the
3337         system got.
3338         
3339         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3340         method so a breakpoint can be set when using gdb.
3341
3342 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3345         on mono_method_get_imt_slot ().
3346
3347         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3348         num_decodes variables.
3349
3350         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3351         change as it doesn't seem to work.
3352         
3353         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3354         wrappers.
3355
3356 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3359         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3360
3361         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3362         builder when using full aot.
3363
3364         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3365         here, it is already handled.
3366         
3367         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3368         correctly for IMT.
3369
3370         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3371
3372         * mini-arm.h: Enable IMT for full aot.
3373         
3374         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3375         arch doesn't support it.
3376
3377         * mini.c (mini_init): Don't disable IMT for full aot if the
3378         architecture supports it.
3379
3380         * mini.h (MonoAotTrampoline): New enum containing the different types
3381         of 'numerous' trampolines.
3382         (MONO_AOT_FILE_VERSION): Bump this.
3383
3384         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3385         static rgctx trampolines. Add support for full-aot IMT thunks.
3386
3387         * mini-amd64.h: Enable IMT for full aot.
3388
3389         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3390         to exclude tests belonging to a category.
3391
3392         * generics.cs: Mark some tests with a !FULLAOT category.
3393
3394         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3395         generics tests.
3396
3397 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3400         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3401         (emit_plt): Fix a warning.
3402
3403 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3406         back into aot-compiler.c to a place where the other functions shared by
3407         the runtime and aot compiler are.
3408         
3409         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3410         as done previously, instead of in MonoAotFileInfo, since pointers might have
3411         alignment requirements.
3412
3413         * mini.h: Bump AOT file format version.
3414
3415 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3416
3417         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3418         that is used at runtime from the aot-compiler.c, this makes it
3419         work on setups that remove the AOT compiler from the output
3420         image. 
3421
3422 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3425         PPC.
3426
3427         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3428
3429         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3430
3431         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3432         stuff to mono_arch_decompose_long_opts ().
3433         (mono_decompose_opcode): Remove some dead code.
3434
3435 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3436
3437         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3438         cmethod can be null for quite a some reasons.
3439
3440 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3441
3442         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3443
3444 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3445
3446         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3447
3448 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3451         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3452         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3453         calls returning structures by addr on amd64.
3454
3455         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3456
3457         * iltests.il.in: Restructure the tail call tests a bit.
3458         
3459 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3462         for virtual methods too.
3463
3464 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3465
3466         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3467         due to regression in verifying System.dll.
3468
3469 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3472         in dynamic methods.
3473
3474         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3475         instances.
3476
3477         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3478         g_str_hash () which can change.
3479
3480         * driver.c (mini_regression): Disable optimizations not supported by
3481         the cpu. Fixes #500019.
3482
3483         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3484         build.
3485
3486 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3489         to the latest LLVM code.
3490
3491 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3494
3495 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3498         x86/amd64.
3499
3500         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3501         no longer saving offsets, so just save the patch types along with the other
3502         info.
3503         * aot-runtime.c (load_patch_info): Update after the changes to 
3504         encode_patch_list ().
3505         (decode_got_entry): Removed, merged into load_patch_info ().
3506         (is_shared_got_patch): Removed, call the same function from
3507         aot-compiler.c.
3508
3509         * mini.h: Bump aot file format version.
3510         
3511         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3512         half-finished no-dlsym code.
3513
3514         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3515         option.
3516
3517         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3518         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3519
3520 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3523         buffer length to work with AOT code.
3524
3525         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3526         ldfld/stfld opcodes.
3527
3528         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3529         as it is not used.
3530
3531         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3532
3533         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3534
3535         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3536         LLVM API.
3537
3538         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3539         if needed. Don't decompose long operations when using llvm.
3540
3541 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3544         PAGESIZE constant.
3545
3546         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3547
3548 2009-05-03  Martin Baulig  <martin@ximian.com>
3549
3550         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3551         mono_debugger_insert_method_breakpoint() since the class init
3552         handler we're inserting at the top of the method already gives us
3553         a notification.
3554
3555 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3558         to mono_arch_decompose_long_opts () for x86 and arm.
3559
3560 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3561
3562         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3563         TARGET_AMD64 here.
3564
3565 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3566
3567         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3568         JIT code.
3569
3570 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3571
3572         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3573         number of trampolines used in full-aot mode.
3574
3575         * aot-compiler.c: Add an ntrampolines option to set the number of 
3576         trampolines emitted in full-aot mode.
3577
3578 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3581         a volatile load. Get rid of get_tempname (), llvm assigns names
3582         automatically.
3583
3584         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3585         builder function.
3586
3587         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3588         a value.
3589
3590         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3591         level 1.
3592
3593         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3594         to the same register as a fixed sreg2. Fixes #497271.
3595
3596         * iltests.il.in: Add a new test.
3597
3598 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3601         stack, since pushes complicate exception handling.
3602
3603         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3604         the stack if they are passed using moves.
3605
3606         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3607
3608         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3609         when using llvm.
3610
3611         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3612         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3613         of FMOVE if it is an R4.
3614
3615 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3618
3619         * mini.h (LLVMCallInfo): New structure to store calling convention 
3620         information for the LLVM back end similar to the CallInfo structures in 
3621         the back-ends.
3622
3623         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3624         call information in a format usable by LLVM.
3625         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3626
3627         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3628         mono_llvm_emit_call () when compiling using LLVM.
3629
3630         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3631         comments to all functions. Fix memory leaks. Add a public init/cleanup
3632         function.
3633
3634         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3635
3636         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3637         mono_array_new_va () jit icall.
3638         
3639 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3640
3641         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3642         multiple machine description files to be specified.
3643         * mini-ops.h: fixes for cross-compilation.
3644
3645 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3646
3647         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3648         some porting work.
3649
3650 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3653         to prevent asserts in various passes. Fixes #497220.
3654
3655 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3656
3657         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3658         a racy assert.
3659
3660         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3661         table to avoid duplicates.
3662
3663         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3664         
3665         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3666         option is used.
3667
3668 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3669
3670         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3671         is for method or field access.
3672
3673 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3676         a Value to stdout.
3677
3678         * mini-llvm.c (mono_llvm_emit_method): Use it.
3679         
3680         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3681         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3682         on volatile values.
3683
3684         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3685         synchronized methods.
3686
3687         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3688
3689         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3690
3691         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3692         OP_LOADI8_MEM.
3693
3694         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3695         allowing some options to be set dynamically.
3696
3697 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3698
3699         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3700         unconditional branch.
3701
3702         * mini.h (MonoTrampolineType): Add new trampoline type 
3703         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3704         compiled code.
3705
3706         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3707         function.
3708
3709         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3710         creation function.
3711
3712         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3713         is enabled. Instead, use the llvm vcall trampoline.
3714         
3715         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3716
3717         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3718         
3719         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3720         functions.
3721
3722         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3723         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3724
3725         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3726         OP_IA64_CSET opcode.
3727
3728         * mini.c: Fix a warning.
3729
3730         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3731         THROW to the appropriate llvm type.
3732
3733 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * mini.c (mini_method_compile): Add statistics for methods JITted
3736         with/without LLVM.
3737
3738 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3741         OP_IA64_CMP_<cond>_IMM opcodes.
3742
3743 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3746         corlib exceptions.
3747
3748         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3749         correctly.
3750
3751         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3752         GENERICINST.
3753
3754 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3755
3756         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3757
3758 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3761         support.
3762
3763         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3764         rgctx invoke trampolines for x86.
3765
3766         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3767         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3768         (mono_arch_get_vcall_slot): Simplify this.
3769
3770 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3773         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3774
3775 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3778         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3779
3780         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3781
3782         * liveness.c (visit_bb): Remove a needless assert.
3783
3784 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3787         full aot support to the arch specific code.
3788
3789         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3790
3791         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3792
3793         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3794         
3795         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3796         collect information about the delegate invoke impl trampolines.
3797
3798         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3799         to save trampolines during full-aot mode.
3800
3801         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3802         creation function which returns a trampoline which sets the rgctx
3803         argument.
3804         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3805         wrapper if possible.
3806         (mono_delegate_trampoline): Ditto.
3807
3808         * mini.c (mono_jit_runtime_invoke): Ditto.
3809
3810         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3811         
3812         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3813
3814         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3815         
3816 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3817
3818         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3819         just setting the opcode to OP_NOP.
3820
3821 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3822
3823         * mini.c (mini_method_compile): Put the last change inside an 
3824         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3825         
3826         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3827         and extend live ranges to cover the whole method when using xdb.
3828
3829         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3830         do it in the trampolines.
3831
3832         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3833         needed.
3834
3835         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3836         
3837         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3838         call code in full-aot mode since IMT is disabled there.
3839         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3840         new JIT no longer has that restriction.
3841
3842         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3843
3844         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3845         a more compact format.
3846         (mono_aot_wrapper_name): New function to return a unique name for a
3847         wrapper method, also used by the AOT runtime.
3848
3849         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3850         aot-compiler.c.
3851
3852         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3853         when a ICollection<T> etc is encountered.
3854         (add_generic_instances): Process method arguments/locals too.
3855         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3856         trampoline names.
3857
3858         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3859         
3860 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3861
3862         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3863
3864         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3865
3866         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3867         representing the result of the decomposition. Nullify instructions
3868         instead of setting them to OP_NOP since nops can't have registers
3869         set.
3870
3871 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3874         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3875         info. Strip 'mapping symbols' on ARM.
3876
3877         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3878         
3879         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3880         this with the native genmdesc.
3881
3882 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3883
3884         * aot-runtime.c:  Fixing the MSVC build.
3885
3886         Code is contributed under MIT/X11 license.
3887
3888 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3889
3890         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3891         JITted code depends on it.
3892
3893 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3894
3895         * aot-compiler.c: Use new MonoGenericParam accessors.
3896
3897 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3898
3899         Reduce memory usage and improve correctness wrt MonoGenericParam
3900         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3901         handing.  Avoid allocating MonoGenericParams, but use the ones in
3902         the container itself.
3903
3904 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3905
3906         * tasklets.c: Return exceptions in the out argument.
3907
3908 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3909
3910         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3911         opcode. Use pointer types in more places instead of casting them to 
3912         integers.
3913
3914         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3915         optimizations.
3916         (mono_llvm_optimize_method): New helper function to optimize a method.
3917
3918         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3919         widening code so it could be called from more places.
3920         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3921         code paths in the call opcodes.
3922
3923 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3924
3925         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3926
3927 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * dwarfwriter.c: Use _ to separate class name 
3930         components as gdb can't handle '.'. Represent reference variables
3931         as 'class <NAME>&'.
3932         
3933         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3934
3935         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3936         
3937         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3938
3939         * gc-test.cs: New file with GC stack marking tests.
3940         
3941         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3942         negative numbers for vfp.
3943
3944         * basic-float.cs: Add a test.
3945         
3946 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3947
3948         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3949
3950 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3951
3952         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3953         part of tasklet/continuation support.
3954
3955 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3958         amd64 opcodes inside an ifdef.
3959
3960         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3961         of complex types.
3962         
3963         * dwarfwriter.c (emit_type): Emit the class info for classes.
3964
3965 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3968
3969         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3970
3971         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3972
3973         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3974
3975 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3978
3979         * mini-llvm.c: Update comments.
3980
3981         * mini.h (COMPILE_LLVM): New macro.
3982
3983         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3984
3985         * ssa.c (mono_ssa_compute): Ditto.
3986         
3987         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3988         the unwind ops from a DWARF FDE.
3989
3990         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3991         methods by extracting the dwarf unwind ops from the unwind info generated
3992         by LLVM.
3993         
3994         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3995         calls.
3996
3997         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3998         addressing modes.
3999
4000 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4001
4002         * Makefile.am (llvm_sources): Enable this.
4003
4004         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4005         failing back to the JIT if something cannot be handled.
4006
4007         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4008         compiling with LLVM.
4009
4010         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4011         compiling with LLVM.
4012
4013         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4014         compiling with LLVM.
4015
4016         * mini-ops.h: Add a few opcodes needed by LLVM.
4017
4018         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4019         has no unwind info.
4020
4021         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4022         backend.
4023
4024         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4025
4026         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4027
4028 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4029
4030         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4031         ridiculously large methods.
4032
4033 2009-03-31  Martin Baulig  <martin@ximian.com>
4034
4035         * debug-debugger.c (debugger_remove_breakpoint): Call
4036         mono_debugger_remove_class_init_callback ().
4037
4038 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4041         right before emitting code, not at the start.
4042
4043         * mini.c (mono_postprocess_patches): Extract this into a separate function
4044         from mono_codegen ().
4045
4046         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4047         byref types correctly.
4048
4049 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4052         by the last change.
4053
4054 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4057         indirect calls, this avoids problems where get_vcall_slot () would get
4058         confused by the native code for the instruction preceeding the call.
4059         (mono_arch_get_vcall_slot): Simplify this.
4060         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4061
4062         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4063         register allocator now seems to depend on them instead of the data in
4064         cpu-<ARCH>.md.
4065
4066         * mini.c (mini_method_compile): Throw the correct type of exception if
4067         mono_method_get_header () fails because of a loading error.
4068
4069 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * mini.c (mini_method_compile): Clear the loader error if the method
4072         header cannot be decoded.
4073
4074         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4075         interface methods on proxies correctly.
4076
4077         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4078         this argument for vtype methods. Add precise liveness info for arguments.
4079
4080         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4081         LIVERANGE_START/END opcodes.
4082
4083         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4084         for arguments and values in registers.
4085
4086 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4089         return a valuetype. Fixes #487518.
4090
4091         * iltests.il: Add a test.
4092         
4093         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4094
4095         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4096         closed over a null reference correctly.
4097
4098 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4099
4100         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4101
4102 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4103
4104         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4105         allocated to the same registers as fixed sregs.
4106
4107 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4108
4109         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4110         ATOMIC_CAS_IMM ops.
4111
4112         * method-to-ir.c: Handle more cases for
4113         Interlocked.CompareExchange.
4114
4115         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4116         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4117         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4118
4119 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * aot-runtime.c (decode_method_ref): Fix a warning.
4122
4123         * unwind.c (mono_unwind_frame): Ditto.  
4124
4125 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4128         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4129
4130         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4131         fix the handling of large values in the ALU_PC_G0_NC relocation.
4132
4133 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4134
4135         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4136
4137 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4138
4139         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4140         ops.
4141
4142 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4143
4144         * method-to-ir.c: MINI_OP3 needs a comma.
4145
4146         * method-to-ir.c, mini.h, mini.c: Remove
4147         mono_init_op_sreg_counts ().
4148
4149 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4150
4151         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4152         OP_JMP.
4153         
4154         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4155         assertion.
4156
4157         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4158
4159         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4160         code somewhat.
4161
4162 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4163
4164         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4165         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4166         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4167         operations.
4168
4169 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * driver.c: Change location of gc_wrapper.h.
4172
4173         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4174         inside finally clauses correctly. Fixes #485721.
4175
4176         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4177         after the change above.
4178
4179         * exceptions.cs: Add a test.
4180         
4181 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4182
4183         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4184
4185         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4186         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4187         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4188
4189         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4190         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4191
4192 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4193
4194         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4195         Simplify logic for ensure_method_is_allowed_to_call_method. 
4196         Handle wrappers on callers.
4197
4198 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4199
4200         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4201         them don't run yet.
4202
4203         * basic-simd.cs: Fix the names of some test methods.
4204
4205 2009-03-18  Geoff Norton  <gnorton@novell.com>
4206
4207         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4208
4209 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4212
4213 2009-03-17  Jb Evain  <jbevain@novell.com>
4214
4215         * driver.c: remove now uneeded call to mono_gc_base_init before
4216         mono_profiler_load.
4217
4218 2009-03-17  Jb Evain  <jbevain@novell.com>
4219
4220         * dwarfwriter.c (token_handler): handle more cases.
4221
4222 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4223
4224         * method-to-ir.c: Remove more dead code (that was required only
4225         because of method_is_safe). Fix compiler warnings.
4226
4227 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4228
4229         * method-to-ir.c: Remove unneeded/useless method_is_safe
4230         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4231
4232 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4233
4234         * mini.c (mini_method_compile): Print the method been compiled with
4235         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4236         for people not familiar with the runtime.
4237
4238 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4239
4240         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4241         a managed object which is later put into a GList. Return its class instead.
4242
4243         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4244         stack slots when using sgen.
4245
4246 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4247
4248         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4249
4250 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4251
4252         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4253         > so it works on the first vreg as well.
4254
4255 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4258         trigger randomly.
4259
4260         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4261         
4262         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4263         implement GArray.
4264
4265 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4268         native->IL offset mapping.
4269
4270 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4273
4274         * basic.cs: Add a test.
4275
4276 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4277
4278         * mini-x86.c (mono_arch_output_basic_block): Use different
4279         registers in case the ones we want to overwrite are used by the
4280         other operand.  Fixes regression in #480807.
4281
4282 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4283
4284         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4285
4286         * dwarfwriter.c (emit_line_number_info): The line number info for
4287         IL code was off by one. Fix that.
4288
4289         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4290         stack.
4291
4292 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4293
4294         Contributed under the terms of the MIT/X11 license by Steven
4295         Munroe <munroesj@us.ibm.com>.
4296
4297         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4298         Fixes #483462.
4299
4300 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4301
4302         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4303         as well.
4304
4305 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4308         the delegate ctor handling code. Fixes #482638.
4309         
4310         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4311         #481458.
4312
4313         * iltests.il.in: Add a test.
4314         
4315         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4316         mini-posix.c.
4317
4318 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4319
4320         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4321         is shared generic code, return the trampoline, even if the method
4322         has already been compiled.  Fixes #479763.
4323
4324         * mini.c, mini.h: New function
4325         mono_jit_find_compiled_method_with_jit_info() which is the same as
4326         mono_jit_find_compiled_method() but also returns the jit info.
4327
4328 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4329
4330         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4331         for methods which actually have one.  For all other methods, make
4332         sure the this argument var is live the whole method.
4333
4334         * mini.c (mini_method_compile): Every shared method has a
4335         this/vtable/mrgctx info.  Fixes #480807.
4336
4337 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4338
4339         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4340         generic/imt thunks where some entries branch through the vtable,
4341         while other entries branch directly.
4342
4343 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4346
4347         * mini-windows.c: Ditto.
4348         
4349         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4350         ctors.
4351
4352 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4355         down an assert.
4356
4357 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4358
4359         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4360         #481403.
4361
4362 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4363
4364         * exceptions-x86.c: Include debug-mini.h - fixes build.
4365
4366 2009-03-04  Martin Baulig  <martin@ximian.com>
4367
4368         * debug-mini.c: Clean up the exception API and add documentation.
4369         (mono_debugger_handle_exception): New public method; this is
4370         called when throwing an exception or encountering an unhandled one.
4371         (mono_debugger_call_exception_handler): Formerly known as
4372         mono_debugger_handle_exception(); this is used to tell the
4373         debugger that we're about to invoke an exception handler.
4374
4375 2009-03-04  Martin Baulig  <martin@ximian.com>
4376
4377         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4378         ../metadata/mono-debug-debugger.c; save and reset exception state.
4379
4380 2009-03-02  Martin Baulig  <martin@ximian.com>
4381
4382         * debug-mini.c: Moved the debugger exception handling here from
4383         ../metadata/mono-debug-debugger.c.
4384
4385         * debug-mini.h
4386         (MonoDebuggerExceptionAction): New exception typedef.
4387
4388         * debug-mini.c
4389         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4390
4391         * exceptions-amd64.c
4392         (mono_amd64_throw_exception): Use the new debugger exception
4393         handling code.
4394
4395         * mini-exceptions.c
4396         (mono_handle_exception_internal): Don't call
4397         mono_debugger_unhandled_exception() here.
4398
4399 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * mini.c aot-compiler.c: Update after the changes to 
4402         mono_marshal_get_runtime_invoke ().
4403
4404         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4405         Virtual generic methods might not have method->slot set, work around
4406         that.
4407
4408         * generics.cs: Add a test.
4409
4410 2009-03-02  Geoff Norton  <gnorton@novell.com>
4411
4412         * mini.c:
4413         * driver.c: Allow signal chaining of SIGFPE as well.
4414
4415 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4418         this since it now receives the method not its generic context in the
4419         IMT reg.
4420
4421         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4422         generic/imt thunks where some entries branch through the vtable, while
4423         other entries branch directly.
4424
4425         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4426
4427         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4428         support for interface methods as well.
4429
4430         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4431         using the normal IMT thunks.
4432
4433         generics.cs: Add new tests.
4434         
4435         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4436         the generic inst to the generic imt thunks. This fixes AOT support, 
4437         improves consistency with the normal IMT thunks, and makes it easier to
4438         add support for interface generic virtual methods later.
4439
4440         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4441         
4442 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * driver.c (mono_set_signal_chaining): New public API function to enable
4445         signal chaining on POSIX platforms.
4446
4447         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4448         (si@lindenlab.com) to implement signal chaining. The original patch was
4449         contributed under the MIT X/11 license:
4450         https://bugzilla.novell.com/show_bug.cgi?id=318894
4451
4452 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4455         too until it can be made to run on amd64.
4456
4457 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4460         to  get_generic_context_from_code () + get_call_info () if possible.
4461
4462 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4465         suspend-on-sigsegv functionality.
4466
4467         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4468         to suspend when a native SIGSEGV is received. This is useful for debugging
4469         crashes which don't happen under gdb, since a live process contains more
4470         information than a core file.
4471
4472         * mini-exceptions.c (mono_print_thread_dump): Use 
4473         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4474
4475         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4476
4477         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4478         
4479         * basic-float.cs: Disable the tests which currently fail on amd64.
4480
4481         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4482         value to mono_arch_patch_callsite () to fix crashes.
4483         
4484         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4485
4486 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4487
4488         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4489         nop code by patching the call address to point to the nullified class init
4490         trampoline, as the former does not seem to be safe on SMP machines.
4491
4492 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4493
4494         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4495         they were wrong.
4496
4497 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4498
4499         * basic-float.cs basic-calls.cs: Fix warnings.
4500
4501 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4502
4503         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4504         correct frame pointer in the LMF.  Should fix #478394.
4505
4506 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4509
4510         * image-writer.c: Make the binary writer less verbose.
4511
4512 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4513
4514         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4515         are called from runtime invoke wrappers.
4516
4517 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * cpu-ppc.md (store_memindex): Increase the size of this.
4520
4521 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4522
4523         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4524
4525         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4526
4527         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4528         OP_LCONV_TO_R_UN.
4529
4530         Last fix for of #467201.
4531
4532
4533 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4534
4535         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4536
4537         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4538         and long_conv_to_r8_2:
4539
4540         Fixed part of #467201.
4541
4542 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4543
4544         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4545
4546         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4547         conversion to 32 bits.
4548
4549         * cpu-x86.md: Increase the size of int_conv_to_r4.
4550
4551         * basic-float.cs: Add a test for this.
4552
4553         Fixed part of #467201.
4554
4555 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4558
4559         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4560         conversion to 64 bits.
4561
4562         * basic-float.cs: Add a test for this.
4563
4564         Fixed part of #467201.
4565
4566 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4569
4570         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4571         This behavior is compatible with MS.
4572
4573         * iltest.il.in: Add a test for this.
4574
4575         Fixed part of #467201.
4576
4577 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4578
4579         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4580
4581         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4582         change the precision of the value.
4583
4584         * cpu-x86.md: Define len for float_conv_to_r4.
4585
4586         * basic-float.cs: Add a test for this.
4587
4588         Fixed part of #467201.
4589
4590 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * mini.c: Adjust locking order to the new semantics where the loader lock
4593         comes first.
4594
4595 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4596
4597         * aot-runtime.c:
4598         * mini-amd64.c:
4599         * mini-arm.c:
4600         * mini-ia64.c:
4601         * mini-mips.c:
4602         * mini-ppc.c:
4603         * mini-sparc.c:
4604         * mini-trampolines.c:
4605         * mini-x86.c:
4606         * mini.c:
4607         * tramp-alpha.c:
4608         * tramp-amd64.c:
4609         * tramp-arm.c:
4610         * tramp-hppa.c:
4611         * tramp-ia64.c:
4612         * tramp-mips.c:
4613         * tramp-ppc.c:
4614         * tramp-s390.c:
4615         * tramp-s390x.c:
4616         * tramp-sparc.c:
4617         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4618
4619 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4620
4621         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4622         as it is incorrect.
4623
4624 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4627         for cctors if needed.
4628
4629 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4630
4631         * mini-ppc.c: Fix build on Darwin.
4632
4633 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4634
4635         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4636         version instead of 3 as valgrind doesn't like version 3.
4637
4638         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4639
4640         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4641         usable for hashing methods.
4642         (emit_extra_methods): Use the new hash to avoid putting every method in the
4643         same hash bucket.
4644
4645         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4646
4647         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4648         whenever a method ref could match a method.
4649         
4650         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4651         test to fail.
4652         
4653         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4654         methods refs.
4655
4656         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4657
4658         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4659         the encoding buffer.
4660
4661         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4662         mono_method_get_header () on inflated methods as an optimization.
4663
4664 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * ssa.c (fold_ins): Fix another crash if the instruction following the
4667         switch was optimized away.
4668
4669 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4670
4671         Contributed under the terms of the MIT/X11 license by Steven
4672         Munroe <munroesj@us.ibm.com>.
4673
4674         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4675
4676 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4679         around the mono_domain_alloc calls, it is now done by the functions
4680         themselves.
4681
4682         * aot-compiler.c (compile_method): Only add wrappers referenced by
4683         the method if compiling with full AOT.
4684         (mono_compile_assembly): Error out if --aot=full is specified on
4685         a platform where it is not supported.
4686
4687         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4688         on ARM too.
4689
4690         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4691         AOT support.
4692
4693         * aot-runtime.c (load_named_code): Handle 
4694         mono_arm_throw_exception_by_token.
4695
4696         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4697
4698         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4699         unaligned.
4700
4701         * Makefile.am (fullaotcheck): Exit if a test fails.
4702
4703         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4704         on ARM.
4705         (mono_compile_assembly): Handle the assembler failing.
4706
4707         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4708         accepting subsections of .bss.
4709
4710         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4711         was optimized away.
4712
4713         * aot-compiler.c: Remove some unused includes.
4714         
4715         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4716         now in MonoImageWriter.
4717
4718         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4719         code sequence which matches a non-virtual call. Fixes #472654.
4720
4721 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4724         xdebug code.
4725         
4726         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4727         use the image/dwarf writers directly.
4728
4729         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4730         field.
4731
4732         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4733         MonoDwarfWriter.
4734
4735         * image-writer.h: Fix some typos.
4736
4737         * dwarfwriter.h dwarfwriter.c: New files.
4738         
4739         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4740         separate module.
4741
4742         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4743         argument to return unwind info.
4744
4745         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4746
4747         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4748         
4749         * aot-runtime.c (decode_method_ref): Add a case for 
4750         MONO_AOT_METHODREF_WRAPPER_NAME.
4751
4752         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4753         for AOT.
4754
4755         * aot-compiler.c (encode_method_ref): Use the new constants.
4756
4757         * aot-runtime.c (decode_method_ref): Ditto.
4758
4759         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4760         be compiled, not the icall itself.
4761
4762 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4765         using decode_method_ref ().
4766
4767         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4768         convert it to an in32. Fixes #475859.
4769
4770         * arrays.cs: Add a test.
4771
4772 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4773
4774         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4775         OP_LCONV_TO_U2.
4776
4777         * basic-long.cs: Add a test.
4778
4779 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4780
4781         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4782         remove the frame pointer in leaf methods which don't receive any
4783         arguments, don't throw exceptions and don't do dynamic stack
4784         allocations.
4785
4786 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4787
4788         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4789         the fail_tramp changes. Hopefully fixes #475132.
4790
4791 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4792
4793         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4794         instead of mono_metadata_signature_dup_full.
4795
4796 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4799         for processing jump tables. Fixes #473787.
4800
4801 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4802
4803         * mini-generic-sharing.c: mini_method_get_context() just calls
4804         mono_method_get_context_general() now.
4805
4806         * mini.c, mini.h: Moved get_object_generic_inst(),
4807         construct_object_context_for_method() and
4808         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4809
4810 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4813         basic block fell through to its successor bblock without a branch. Fixes
4814         #474718.
4815
4816         * iltests.il.in: Add a test.
4817         
4818         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4819         (can_encode_patch): We can now handle arrays of generic parameters and
4820         array methods.
4821
4822         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4823
4824         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4825         the AOT file to avoid some #ifdefs in aot-runtime.c
4826
4827         * mini.h: Bump AOT file format version.
4828
4829 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * Makefile.am (fullaotcheck): Make this run the tests.
4832
4833         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4834
4835 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4836
4837         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4838         individually.  Fixes #473482.
4839
4840 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4843
4844 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4845
4846         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4847         (mono_compile_assembly): Hush compile warnings about
4848         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4849         code path.
4850
4851 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4854
4855         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4856
4857         * aot-compiler.c: Fix arm support.
4858
4859         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4860         img_writer_emit_unset_mode () function.
4861
4862         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4863         (mono_unwind_get_dwarf_pc_reg): Ditto.
4864
4865         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4866         Move almost all platform specific code to a set of arch_ functions, 
4867         and document them to ease porting.
4868         
4869         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4870
4871         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4872
4873         * aot-compiler.c: Extract the image writing functionality into a separate
4874         module to reduce the size of this file.
4875
4876 2009-02-09  Geoff Norton  <gnorton@novell.com>
4877
4878         * mini-s390.c: Fix the signature of emit_sig_cookie.
4879
4880 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4883
4884         * aot-runtime.c (is_shared_got_patch): Ditto.
4885
4886         * aot-runtime.c (load_named_code): Cope with the fact that 
4887         decode_got_entry () won't decode the patch fully if its corresponding got
4888         entry is already filled.
4889         
4890         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4891         Initialize *ji.
4892         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4893
4894         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4895         as the moving pointer instead of 'buf' for consistency with the rest of the
4896         codebase.
4897         (mono_arch_create_monitor_exit_trampoline): Ditto.
4898
4899         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4900         generic_class_init trampolines.
4901         (add_generic_class): Extract some code from add_generic_instances () into a
4902         separate function so it can be called from other places too.
4903         (compile_method): Call add_generic_class () for the classes of inflated methods
4904         referenced by the method.
4905         (can_encode_patch): Allow references to generic parameters.
4906
4907         * aot-runtime.c: Add support the patches required by the new trampolines.
4908         
4909         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4910         support.
4911
4912         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4913         full-aot support.
4914
4915         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4916         this from get_throw_pending_exception, make the signature full aot compatible.
4917
4918         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4919
4920         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4921
4922         * exceptions.cs: Add a test.
4923
4924 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4927         use the DWARF_DATA_ALIGN constant instead.
4928
4929         * exception-<ARCH>.c: Update after the above change.
4930
4931         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4932         dwarf unwinder.
4933
4934         * mini-arm.c: Enable the dwarf unwinder.
4935
4936         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4937         instead of mono_class_setup_vtable ().
4938
4939 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4942         dwarf unwinder.
4943
4944         * mini-x86.h: Enable the dwarf unwinder.
4945
4946 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4947
4948         Fix mcs/tests/test-7.cs
4949         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4950         2009-02-03.
4951
4952 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * mini.c (print_jit_stats): Remove some unused statistics.
4955
4956 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4959
4960 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4961
4962         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4963         the method we get from mono_object_get_virtual_method() because
4964         that function does it properly, now.
4965
4966 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4969         opcodes. Fixes #472775.
4970
4971 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4972
4973         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4974         fact that mono_find_jit_info() sometimes returns the context
4975         corresponding to the jit info in new_ctx.  Fixes #472600.
4976
4977 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4980         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4981         klass->enum_basetype directly.
4982
4983         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4984         enum subtypes.
4985
4986         * unwind.c: Avoid 0 sized arrays.
4987
4988 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4991         size on systems with 64k pages. Fixes #471389.
4992
4993 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4994
4995         Contributed under the terms of the MIT/X11 license by Steven
4996         Munroe <munroesj@us.ibm.com>.
4997
4998         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4999         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5000         necessary.
5001
5002 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5003
5004         Contributed under the terms of the MIT/X11 license by Steven
5005         Munroe <munroesj@us.ibm.com>.
5006
5007         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5008         comparison fix.
5009
5010         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5011         The trampoline can be longer on PPC64.
5012
5013 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5014
5015         Contributed under the terms of the MIT/X11 license by Steven
5016         Munroe <munroesj@us.ibm.com>.
5017
5018         * mini-ppc.c: Compiler warning fixes and trivial code
5019         simplifications.
5020
5021 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5024         ins->dreg which could be a hardware register, not a vreg.
5025
5026         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5027         
5028         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5029         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5030
5031         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5032         
5033         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5034         ->dreg, that is not the vreg we are looking for.
5035
5036         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5037
5038         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5039         LIVERANGE_END.
5040
5041         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5042         strange crashes.
5043
5044 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5047
5048         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5049         the line diff is 0.
5050
5051         * aot-compiler.c: Add xdebug support on x86.
5052
5053         * unwind.c: Add x86 support.
5054         
5055         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5056         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5057
5058         * mini.c (mini_method_compile): Ditto.
5059         
5060         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5061         the variable index.
5062
5063         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5064         which mimic .push_section/.pop_section in GAS.
5065         
5066         * aot-compiler.c: Emit precise live range information for variables.
5067
5068         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5069
5070         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5071         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5072         them.
5073
5074         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5075         the live ranges of variables.
5076
5077         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5078         of the variable in terms of native offsets.
5079
5080 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5081
5082         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5083         
5084 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5085
5086         Contributed under the terms of the MIT/X11 license by Steven
5087         Munroe <munroesj@us.ibm.com>.
5088
5089         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5090         order (offset then base reg) for ppc_load_multiple_regs.
5091         (emit_save_saved_regs) Correct operand order for
5092         ppc_store_multiple_regs.
5093         (mono_arch_get_call_filter): Correct operand order for
5094         ppc_load_multiple_regs.
5095
5096         * mini-ppc.c (emit_memcpy): Fix operand order for
5097         ppc_load_reg_update and ppc_store_reg_update.
5098         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5099         (mono_arch_emit_epilog): Correct operand order for
5100         ppc_load_multiple_regs.
5101
5102         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5103         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5104
5105 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5106
5107         * cpu-ppc64.md: Fixed storer4_memindex length.
5108
5109 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5110
5111         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5112         line number info.
5113         
5114         * aot-compiler.c (emit_line_number_info): Optimize this.
5115
5116 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5119         
5120         * aot-compiler.c: Add debug info for methods without debug info by
5121         emitting an IL file and having the line number info referencing that file.
5122
5123         * aot-compiler.c: Optimize the size of the generated line number info.
5124
5125         * aot-compiler.c: Emit line number info in xdebug mode.
5126
5127         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5128         million arguments.
5129
5130 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5131
5132         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5133
5134         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5135         is used.
5136
5137 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * basic-calls.cs: Test for the weird crash found on arm.
5140         
5141 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5142
5143         * cpu-arm.md: Increase the size of storer8_membase_reg and
5144         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5145
5146         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5147         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5148         reg to LR otherwise we'll be loading/storing from just the offset.
5149
5150 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5151
5152         Question: if we are storing gint32's inside the "*native_offset",
5153         should we change the signature to "gint32 *native_offset" to
5154         ensure that we do not have type definition problems?
5155         
5156         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5157         an int * as this is what the other function expects, causes
5158         problems with Freescale's compiler that defined int32_t to be a
5159         long and makes int incompatible 
5160
5161 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5162
5163         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5164         filename conflict with bjam.
5165
5166 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5167
5168         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5169         as it might use decomposed ops.
5170
5171 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5174
5175         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5176         is defined.
5177
5178         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5179
5180         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5181         offsets.
5182
5183         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5184         way registers are stored in MonoContext on arm.
5185
5186         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5187         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5188
5189         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5190
5191         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5192
5193         * mini.c (mini_init): Register mono_isfinite.
5194
5195         * jit-icalls.c (mono_isfinite): New jit icall.
5196
5197         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5198         
5199         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5200         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5201         the parent frame.
5202
5203 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5204
5205         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5206         separate frame and stack pointers, so we must use FP to find the register
5207         spill area.
5208         The FP reg is retrieved from the MonoContext::regs array.
5209
5210 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5211
5212         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5213         as FPA requires it.
5214
5215 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5216
5217         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5218         return R4 and R8 when not running under softfloat.
5219
5220         Fixes basic-calls.exe
5221
5222 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5223
5224         * mini-arm.c: Implement some overflow opcodes.
5225
5226 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5227
5228         * ssa.c: handle another alloca.h
5229
5230         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5231         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5232         MONO_ARCH_USE_SIGACTION. 
5233
5234         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5235         capability defines.
5236
5237         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5238
5239         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5240         PPC targets as sigaction does not exist on all platforms, define
5241         this on a per-platform basis.
5242
5243         Instead of erroring out if the platform is not defined, include
5244         mini-ppc-os.h, and expect that the OS specific setting provides
5245         the required information.   
5246
5247 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * aot-compiler.c: Fix --enable-minimal=aot.
5250
5251 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5254         previous change.
5255
5256 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5257
5258         * exceptions-arm.c: Fix warnings.
5259
5260         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5261         ARM.
5262
5263         * mini-x86.c: Fix --enable-minimal=jit build.
5264
5265         * mini.c: Really fix --enable-minimal=jit build.
5266         
5267         * mini.c (construct_object_context_for_method): Move this outside
5268         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5269
5270         "Backported" of r124984 from 2.0 branch.
5271         
5272         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5273
5274         "Backport" of r124977 + r124978 from 2.0 branch.
5275         
5276         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5277         to avoid calling mono_exception_from_token () from the throw trampoline.
5278         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5279         for throwing corlib exceptions, this fixes full-aot support for corlib
5280         exceptions.
5281
5282         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5283
5284 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5285
5286         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5287         part of the changes to split the code in mini into operating
5288         system specific files.
5289
5290         This patch was done by copying mini.c to the respective files to
5291         preserve SVN history.
5292
5293 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5296
5297 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5300         remoting-invoke-with-check wrappers of shared methods.
5301
5302         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5303
5304 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5305
5306         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5307         optimization if the top of stack is the last instruction in the
5308         bblock.  Otherwise it might have been used after its definition.
5309         Fixes #469742.
5310
5311 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5312
5313         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5314         method as well when get_vcall_slot () fails to match a code sequence.
5315
5316         * mini-arm.c: Fix the android build, which doesn't have
5317         __aeabi_read_tp.
5318
5319 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5322         the s390x build.
5323
5324 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5325
5326         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5327
5328 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5329
5330         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5331         and put its id into jinfo->used_regs. This is only used on amd64,
5332         which is currently the only platform generating unwind info.
5333
5334         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5335         the dwarf unwinder. This is required to correctly handle async exceptions
5336         like thread abort and stack overflows, which can happen while a method
5337         is in the middle of its prolog or epilog.
5338         
5339         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5340         the unwind info belonging to an AOTed method.
5341
5342         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5343         into cfg->unwind_ops.
5344         
5345         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5346
5347         * mini.c (mini_init): Call mono_unwind_init ().
5348         (mini_cleanup): Call mono_unwind_cleanup ().
5349
5350         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5351         unwind info to be shared between methods.
5352
5353         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5354         saved in the LMF.
5355
5356         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5357         get_throw_pending_exception () to avoid initialization races.
5358
5359         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5360         mono_arch_exceptions_init () function.
5361
5362         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5363
5364 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5365
5366         * mini.c (mono_get_domain_intrinsic): New helper function.
5367         (mono_get_thread_intrinsic): Ditto.
5368
5369         * mini-arm.c mini-ia64.c: Use the new helper functions.
5370         
5371         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5372         the last constrained_call change, since it is needed in the non-AOT
5373         case as well.
5374
5375         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5376         
5377         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5378         mono_get_lmf_addr () on arm eabi linux.
5379
5380 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5381
5382         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5383         code sequence which matches a non-virtual call.
5384
5385 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5386
5387         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5388         stack pointer (r1).
5389
5390 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5393         runtime-invoke wrappers, since they are also shared based on signature.
5394
5395 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5396
5397         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5398         info from the (correct) context.
5399
5400 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5403         
5404         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5405         using dwarf unwinding info. Not yet used.
5406
5407         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5408
5409 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5410
5411         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5412         descriptors.
5413
5414         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5415         special case and handle mono_arch_delegate_invoke_impl() returning
5416         function descriptors.
5417
5418         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5419         trampolines return function descriptors, too.
5420
5421 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5422
5423         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5424         out_of_line optimization.
5425
5426 2009-01-21  Martin Baulig  <martin@ximian.com>
5427
5428         * mini.h
5429         (MonoCompile): Added `disable_deadce_vars' to disable removing
5430         unused variables.
5431
5432         * mini.c
5433         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5434         inside the debugger.
5435
5436         * liveness.c (mono_analyze_liveness): Don't remove any unused
5437         variables if `cfg->disable_deadce_vars' is set.
5438
5439 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5440
5441         * method-to-ir.c: Only apply exception constructor optimization if
5442         the the method actually belongs to an exception class.  Fixes
5443         #467456.
5444
5445 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5448         change inside a #ifdef __mono_ppc64__.
5449
5450         * aot-compiler.c (compile_method): Remove the previous limitation.
5451
5452         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5453         on type variables in AOTed code.
5454         
5455         * aot-compiler.c (compile_method): Skip generic methods having type 
5456         constraints on their generic parameters.
5457
5458         * aot-compiler.c (compile_method): Check for methods which cannot be
5459         encoded inside RGCTX_FETCH patches as well.
5460
5461         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5462         build.
5463
5464 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5465
5466         * method-to-ir.c: Force the vtable variable in shared generic code
5467         for the case that they might show up on a stack trace where they
5468         are needed.
5469
5470         * mini-exceptions.c: Save and use generic sharing info as well as
5471         IP in stack traces to resolve shared generic instantiations.
5472
5473 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5476         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5477
5478 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5479
5480         * method-to-ir.c: Do generic sharing for array constructors.
5481
5482 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5483
5484         * mini-exceptions.c (mono_print_thread_dump): Add information
5485         about the thread state using wapi_current_thread_desc.
5486
5487 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5488
5489         * basic-simd.cs: Tests for the new constructors. 
5490
5491 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5492
5493         * mini-ops.h: Added OP_EXPAND_*
5494
5495         * cpu-x86.md: Same.
5496
5497         * mini-x86.c (mono_arch_output_basic_block): Same.
5498         
5499         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5500
5501 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5502
5503         * iltests.il.in: Add a test for #467385.
5504
5505 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5506
5507         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5508         thread been cleaned up is not the same currently in execution.
5509
5510         Fixes appdomain-unload crashes on windows, osx and linux variants
5511         without the __thread keyword.
5512
5513 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5516         (koush@koushikdutta.com). Implement this for android.
5517
5518         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5519         begins with a digit.
5520
5521         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5522         mono_marshal_get_write_barrier ().
5523
5524 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5527         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5528         that pass them on a register pair.
5529
5530         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5531         test was crashing due to that.
5532
5533 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5534
5535         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5536         trampoline code. Include ucontext.h only if available.
5537
5538 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5539
5540         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5541         and doesn't check whether it's sharable, like it was before
5542         removing the shared generics hash.  This brings IronPython
5543         performance back to what it was before that change.
5544
5545 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5546
5547         * method-to-ir.c: Handle delegate invocation optimization earlier,
5548         otherwise it would be handled (much more slowly) by the
5549         final/sealed optimization.
5550
5551 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5552
5553         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5554         domain is not set. Fixes #465864.
5555
5556 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5557
5558         * method-to-ir.c: Don't stop sharing of generic methods with catch
5559         clauses - we already handle those.
5560
5561 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5562
5563         * mini.c, mini.h: lookup_generic_method() is now
5564         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5565         making the shared_generics_hash obsolete.
5566
5567 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5568
5569         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5570         use the red zone.  Make room on the stack first and then use it,
5571         not the other way around.
5572
5573 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5574
5575         * mini.c (mini_init): Call mono_xdebug_init ().
5576
5577         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5578
5579 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5582
5583         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5584         trampolines.
5585
5586         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5587         debug+unwind info for trampolines.
5588
5589         * mini.c (mono_create_unwind_op): New helper function.
5590
5591         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5592
5593 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * aot-compiler.c: Fix the build.
5596
5597 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * Makefile.am: Update dtrace-prelink.sh location.
5600
5601 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5604         optimization. Fixes #464520.
5605
5606 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5607
5608         * mini-amd64.c : Adding code to save/restore non-volatile registers
5609            on Winx64.
5610
5611         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5612           registers on Winx64.
5613
5614         Contributed under MIT/X11 license.
5615
5616 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5619         __GNUC_MINOR__ which can break when the major version changes.
5620
5621 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5622
5623         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5624
5625 2009-01-07  Geoff Norton  <gnorton@novell.com>
5626
5627         * helpers.c:  Allow mono -v -v -v to work on darwin.
5628
5629 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5630
5631         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5632           pattern. 
5633
5634         Contributed under MIT/X11 license.
5635
5636 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5639         instead of directly accessing type->data.klass. Fixes #462016.
5640         (mono_allocate_stack_slots_full): Ditto.
5641
5642         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5643         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5644
5645         * aot-compiler.c (emit_plt): Fix ARM build.
5646
5647 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5650         
5651         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5652         change.
5653
5654         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5655         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5656         #463357.
5657
5658         * iltests.il.in: Add a regression test.
5659
5660 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5661
5662         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5663
5664 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * basic-simd.cs: Add a regression test for #462457.
5667
5668 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * mini-ops.h: Add a definition of XPHI.
5671
5672         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5673
5674         * ssa.c (op_phi_to_move): Handle XPHI.
5675
5676         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5677
5678         Fixes #462457
5679
5680 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5683
5684 2008-12-31  Geoff Norton  <gnorton@novell.com>
5685
5686         * mini-ppc.c: The prolog size allocated can be too small for darwin
5687         ppc32 under certain circumstances.  Also fix a small logic bug.
5688
5689 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5692         while loading AOT methods.
5693
5694         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5695         since only the former is nulled out after a successful cast. This prevents
5696         crashes with rethrown exceptions when using --debug=casts.
5697
5698 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5699
5700         * mini.h: New macro for checking whether a method is final,
5701         i.e. whether the method or its class is marked final.
5702
5703         * method-to-ir.c: Use the new macro for all final-checks
5704         consistently.  Fixes the crash in the System.ServiceModel tests.
5705
5706 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5707
5708         * mini-exceptions.c (get_exception_catch_class): Corrected another
5709         overly strict assertion.
5710
5711 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5712
5713         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5714         Clobbering it is not allowed because the caller might use it as
5715         the vtable register in the interface call.
5716
5717 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5718
5719         * mini-exceptions.c (get_exception_catch_class): Corrected an
5720         overly strict assertion.
5721
5722 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5723         
5724         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5725
5726         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5727
5728         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5729
5730         * cpu-mips.md: correct lengths for certain long_ opcodes.
5731
5732         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5733
5734         * 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().
5735         
5736 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5737
5738         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5739         
5740 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5741         
5742         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5743         
5744 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5745
5746         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5747         next basic block.
5748         
5749 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5750
5751         * 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
5752
5753         * 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)
5754         
5755 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5756         
5757         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5758         
5759 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5762         gshared code. Fixes #458947.
5763
5764         * generics.cs: Add a test.
5765
5766 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5767         
5768         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5769         
5770         * mini-mips.c: first pass n32 code generation.
5771
5772         * mini-mips.h: datatypes and defines for n32 support.
5773
5774         * exceptions-mips.c: first pass n32 code generation.
5775         
5776         * tramp-mips.c: first pass n32 code generation.
5777         
5778         * cpu-mips.md: add long_ opcodes.
5779         
5780 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5781
5782         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5783
5784         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5785         
5786         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5787         
5788         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5789
5790         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5791
5792         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5793
5794         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5795
5796         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5797
5798         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5799
5800 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5801
5802         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5803
5804 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5805
5806         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5807
5808 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5809
5810         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5811         descriptors for helper functions directly in front of the code.
5812
5813 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5814
5815         * method-to-ir.c: Removed an unnecessary assertion.
5816
5817 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * method-to-ir.c: Merge SGEN changes from the old JIT.
5820
5821 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * driver.c (compile_all_methods_thread_main): Handle failure of
5824         mono_get_method ().
5825
5826 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5827
5828         * mini-ppc.c: Merged with mini-ppc64.c.
5829
5830         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5831
5832         * Makefile.am: Use the same sources for PPC and PPC64.
5833
5834         * mini-ppc64.c: Removed.
5835
5836 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5837
5838         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5839         code to mono_bb_is_fall_through.
5840         
5841         * branch-opts.c (mono_remove_critical_edges): Same.
5842
5843 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5844
5845         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5846         expect that an OP_BR_REG will be there.
5847
5848 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5849
5850         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5851         for the many branch ops. The original check miss OP_BR_REG.
5852
5853         Fixes #457574.
5854         
5855 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5856
5857         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5858
5859 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5860
5861         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5862         while holding the aot lock.
5863
5864 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5865
5866         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5867         
5868 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5869
5870         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5871           to release all runtime callable wrappers held by the runtime.
5872
5873         Contributed under MIT/X11 license.
5874
5875 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5876
5877         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5878           for Winx64.
5879
5880         Contributed under MIT/X11 license.
5881
5882 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5885         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5886
5887 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5888
5889         * cpu-mips.md: fix ckfinite length
5890
5891         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5892         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5893         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5894         
5895 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5896
5897         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5898         
5899 2008-12-08  Geoff Norton  <gnorton@novell.com>
5900
5901         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5902         size by 8 bytes as well.
5903
5904 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5905
5906         * basic-simd.cs: Fix method names for Vector16b.
5907         
5908 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5909
5910         * basic-simd.cs: Fix method names for Vector16sb.
5911
5912 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5913
5914         * basic-simd.cs: Fix method names for Vector8us.
5915         
5916 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5917
5918         * basic-simd.cs: Fix method names for Vector8s.
5919         
5920 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5921
5922         * basic-simd.cs: Fix method names for Vector4ui.
5923
5924 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5925
5926         * basic-simd.cs: Fix method names for Vector2l.
5927
5928 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * basic-simd.cs: Fix method names for Vector2d.
5931
5932 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5933
5934         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5935         that are extension methods.
5936
5937 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5938
5939         * basic-simd.cs: Fix method names for Vector4f.
5940
5941 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5942
5943         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5944         as such. Fixes #456669.
5945
5946 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5947
5948         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5949         
5950 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5951
5952         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5953         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5954         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5955         (mips_adjust_stackframe): handle FP spills
5956                 
5957         * mini-ops.h: add mips_mtc1_s2
5958         
5959         * cpu-mips.md: add mips_mtc1_s2
5960         
5961 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5962
5963         * unwind.c: New file, move the unwind info encoding functions here from
5964         aot-compiler.c, so they could be used at runtime too.
5965
5966 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5967
5968         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5969         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5970         
5971 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5972
5973         * mini-mips.c: cleanup warnings
5974         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5975         (mips_adjust_stackframe): handle case of taking the address of stack locals
5976         
5977 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * aot-compiler.c: Implement a few functions missing from the asm writer.
5980         (emit_method_code): Only write symbols for methods when using the bin
5981         writer, since the assembler can't deal with the characters in our method
5982         names.
5983
5984         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5985
5986         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5987         call.
5988
5989         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5990         a bit to also restore %rax.
5991
5992 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5993
5994         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5995
5996 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5999         arguments.
6000
6001 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6002
6003         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6004
6005         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6006         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6007
6008         * exceptions-ppc64.c: Removed.
6009
6010         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6011
6012 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6013
6014         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6015         tramp-ppc64.c.
6016
6017         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6018
6019         * tramp-ppc64.c: Removed.
6020
6021 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6022
6023         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6024         the TYPESPEC table.
6025
6026 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6027
6028         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6029
6030         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6031         mini-ppc.h instead of mini-ppc64.h.
6032
6033         * mini-ppc64.h: Removed.
6034
6035 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6036
6037         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6038         
6039         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6040         
6041 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6042
6043         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6044         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6045         code easier.
6046
6047 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6048
6049         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6050
6051 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6052
6053         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6054
6055 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * basic-simd.cs: Tests for operator == and != on Vector4f.
6058
6059 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6060
6061         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6062
6063         * simd-intrinsics.c: Kill useless enum.
6064
6065 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6066
6067         * cpu-mips.md: add long_conv_to_ovf_i4_2
6068         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6069
6070 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6071
6072         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6073         
6074         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6075
6076 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6077
6078         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6079         
6080 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * basic-simd.cs: Add tests for new methods.
6083
6084 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6085
6086         * simd-intrinsics.c: Add support for operator == and !=
6087         on Vector4(u)i.
6088
6089         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6090
6091 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6092
6093         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6094
6095 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6096
6097         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6098
6099         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6100         MONO_PATCH_INFO_ICALL_ADDR.
6101
6102         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6103
6104         * aot-compiler.c: Resurrect full-aot support.
6105
6106 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6107
6108         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6109         
6110 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6111
6112         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6113         
6114 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6115
6116         * basic-simd.cs: Fix tests to work under ppc.
6117         Remove tests for methods that will be removed.
6118
6119 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6120
6121         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6122         generic type (via a typedef or typeref) correctly.
6123
6124 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6127         diagnose an assertion failure.
6128
6129 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6130
6131         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6132         Fix trampoline size.
6133
6134         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6135         conversion opcodes are implemented natively instead via emulation.
6136
6137 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6138
6139         * cpu-mips.md: remove mips_xori
6140
6141         * mini-ops.h:  remove mips_xori
6142
6143         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6144
6145         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6146         
6147         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6148         
6149 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6150
6151         * cpu-mips.md: fix instruction lengths.
6152
6153         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6154
6155         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6156
6157         * mini-ops.h: fix slti / sltiu op profiles.
6158         
6159 2008-12-02  Martin Baulig  <martin@ximian.com>
6160
6161         * method-to-ir.c (mono_method_to_ir): Disable debugging
6162         information for the init locals block to make the debugger stop
6163         after all locals have been initalized.
6164
6165 2008-12-02  Martin Baulig  <martin@ximian.com>
6166
6167         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6168         running inside the debugger.
6169
6170 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6173         is enabled.
6174
6175         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6176         alu->alu imm optimization which only shows if deadce is disabled.
6177
6178         * aot-compiler.c: Rename the function names for the binary and asm writers
6179         so they can coexist in the same process. Rework the xdebug code to use the
6180         asm writer. This avoids the need to call into the runtime to dump the
6181         debugging info. Add more debugging info for types.
6182
6183         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6184
6185         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6186         cpu description tables, they can't occur in cpu-<ARCH>.md.
6187
6188         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6189         the stack in CEE_LDFLDA. Fixes #450542.
6190
6191         * generics.cs: Add a new test.
6192
6193 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6194
6195         * mini-ops.h: updated MIPS opcodes
6196         * mini-mips.c: decompose long opts
6197         * mini-mips.h: decompose long opts
6198         
6199 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6200
6201         * cpu-mips.md: fix length on int_rem_un
6202         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6203         
6204 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6207
6208         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6209
6210 2008-11-29  Martin Baulig  <martin@ximian.com>
6211
6212         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6213         mono_debug_using_mono_debugger() in addition to the
6214         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6215
6216 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6217
6218         * mini-ops.h: updated more MIPS opcodes
6219         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6220         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6221         
6222 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6223
6224         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6225
6226 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6227
6228         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6229         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6230         * mini-ops.h: correct selected mips opcode entries
6231         
6232 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6233
6234         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6235         make them work.
6236
6237 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6238
6239         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6240
6241 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6242
6243         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6244         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6245         * mini-mips.h: disable IMT
6246         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6247         
6248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6249
6250         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6251
6252 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6253
6254         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6255
6256 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6259         consistency.
6260
6261 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6264         for Set/GetVector aligned versions.
6265
6266 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         * basic-simd.cs: Add tests for Get/SetVector.
6269
6270 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6271
6272         * mini.c: Removed g_slist_append_mempool().  Now in
6273         metadata/mempool.c.
6274
6275 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6276
6277         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6278         size properly and make the bounds check optional.
6279
6280         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6281         for SetVector and IsAligned.
6282
6283 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * mini.c: Remove unused mono_normalize_opcodes () function.
6286
6287 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6288
6289         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6290         using the new atomic add ops now.
6291
6292         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6293         add.
6294
6295 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6296
6297         * mini-ppc64.c: Several fixes.
6298
6299 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6300
6301         * cpu-mips.md: added jump_table
6302         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6303
6304 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6305
6306         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6307
6308 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6309
6310         * mini-ops.h: corrected a handful of MIPS opcodes.
6311
6312 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6313
6314         * aot-compiler.c: MIPS to use ELF writer
6315
6316 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6317
6318         * mini-codegen.c: remove MIPS specific assert.
6319
6320 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6321
6322         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6323         fixes.  PPC64 now passes most of the runtime regressions.
6324
6325 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6328         volatile intervals a bit.
6329
6330 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6331
6332         * basic-long.cs: New test case.
6333
6334 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6335
6336         * mini.c (mini_method_compile): Disable globalra for large methods for 
6337         now.
6338
6339         * regalloc2.c (order_moves): Add fp support.
6340
6341         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6342         source bblock ends with an OP_BR_REG.
6343
6344         * ratests.cs: Add a new test.
6345
6346 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6347
6348         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6349         sharing.  PPC64 now passes generics.exe.
6350
6351 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6352
6353         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6354
6355 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6358         memory when mono_jit_info_table_find () can't find the method in the
6359         LMF case.
6360
6361         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6362         AOTed code too.
6363         
6364         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6365         writer too.
6366
6367 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6368
6369         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6370         Several fixes.  PPC64 now runs exceptions.exe and
6371         devirtualization.exe.
6372
6373 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6374
6375         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6376         arrays.exe and basic-math.exe.
6377
6378 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6379
6380         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6381         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6382
6383 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6384
6385         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6386
6387 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6390
6391         * ir-emit.h: Move macros from method-to-ir.c to here.
6392
6393 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * mini-ops.h: Correct the long simd ops to use LREG.
6396
6397 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6400         
6401         * mini-ops.h: Correct the dreg type of a few long opcodes.
6402
6403         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6404         Add netbsd support.
6405
6406 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6407
6408         * mini-ppc.c: remove negative stack references in epilog
6409         for platforms that don't support the red zone.
6410
6411 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6412
6413         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6414         point regs.  Now PPC64 passes basic-calls.exe.
6415
6416 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6417
6418         * basic-simd.cs: Add tests for accessors of Vector2l.
6419
6420 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6421
6422         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6423
6424         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6425         
6426         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6427
6428 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6429
6430         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6431         PPC64 passes basic-long.exe.
6432
6433 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6434
6435         * decompose.c: Decompose carry and overflow add on PPC64 like on
6436         other 64 bit archs.  Don't decompose sub at all on PPC64.
6437
6438         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6439         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6440         basic-long.exe.
6441
6442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6443
6444         * basic-simd.cs: Add tests for accessors of Vector2d.
6445
6446 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6447
6448         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6449
6450         * cpu-x86.md: Same.
6451
6452         * mini-x86.c (mono_arch_output_basic_block): Same.
6453         
6454         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6455
6456 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6457
6458         * basic-simd.cs: Add tests for accessors of Vector4f.
6459
6460 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6461
6462         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6463
6464         * cpu-x86.md: Same.
6465
6466         * mini-x86.c (mono_arch_output_basic_block): Same.
6467         
6468         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6469
6470 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6471
6472         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6473
6474 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6477
6478         * cpu-x86.md: Same.
6479
6480         * mini-x86.c (mono_arch_output_basic_block): Same.
6481         
6482         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6483
6484 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6485
6486         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6487
6488 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6489
6490         * simd-intrinsics.c: Enable setters for Vector16sb.
6491
6492 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6495
6496         * cpu-x86.md: Same.
6497
6498         * mini-x86.c (mono_arch_output_basic_block): Same.
6499         
6500         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6501
6502 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6503
6504         * simd-intrinsics.c: Implement setter for Vector8us.
6505
6506 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6507
6508         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6509         for dead variables.
6510
6511 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6512
6513         * mini-ppc.c: remove references to the red zone in the prolog
6514         (for systems that don't support it).
6515
6516 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6517
6518         * cpu-ppc64.md: Fixed a few instruction lengths.
6519
6520         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6521         now.
6522
6523 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6524
6525         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6526         basic.exe now.
6527
6528 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6529
6530         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6531
6532 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6533
6534         * mini-ops.h: Added OP_INSERT_I2.
6535
6536         * cpu-x86.md: Same.
6537
6538         * mini-x86.c (mono_arch_output_basic_block): Same.
6539         
6540         * simd-intrinsics.c: Implement setter for Vector8s.
6541
6542         * simd-methods.h: Add the names of get setters of Vector8s.
6543
6544 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6545
6546         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6547         
6548         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6549         parameters.
6550
6551         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6552
6553 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6554
6555         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6556         for PPC64.  An empty program runs now.
6557
6558 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6559
6560         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6561
6562         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6563         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6564         info for JITted code is emitted into a shared library, loadable into gdb.
6565
6566 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6567
6568         * Makefile.am: Changes to build PPC64.
6569
6570         * mini-arch.h: Include mini-ppc64.h on PPC64.
6571
6572 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6573
6574         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6575         in PPC code up to r119147.
6576
6577 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6578
6579         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6580         cpu-ppc64.md: Changes for PPC64.
6581
6582         Based on code submitted by andreas.faerber@web.de at
6583         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6584         X11/MIT license.
6585
6586 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6587
6588         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6589         cpu-ppc64.md: Copied from the corresponding PPC files from
6590         r118846.
6591
6592 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6593
6594         * mini-ops.h: Added OP_ROUND.
6595
6596         * cpu-x86.md: Added round.
6597
6598         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6599
6600         * basic-math.cs: Added test_0_round to test rounding.
6601
6602         Contributed under MIT/X11 license.
6603
6604 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6605
6606         * aot-compiler.c : Fix the Winx64 build.
6607
6608         Contributed under MIT/X11 license.
6609
6610 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6611
6612         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6613         in OP_EXTRACT_R8 to avoid possible stack corruption.
6614
6615 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6618
6619         * cpu-x86.md: Added extract_r8.
6620
6621         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6622         
6623         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6624         a couple of OP_EXTRACT_I4.
6625
6626         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6627
6628         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6629
6630 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6631
6632         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6633         and not 4.1. 
6634
6635 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6636
6637         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6638         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6639
6640         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6641         are not needed any more.
6642
6643         * mini.h: Remove the unused INS_LIST macros.
6644
6645         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6646         longer needed.
6647
6648         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6649         ir-emit.h.
6650
6651         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6652         mono_alloc_ireg () instead.
6653
6654         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6655         macros.
6656
6657         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6658         on amd64.
6659
6660         * aot-runtime.c (load_aot_module): Disable AOT when running under
6661         CAS.
6662
6663         * mini-amd64.h: Change the monitor fastpath defines to check for
6664         !PLATFORM_WIN32 so they work on *bsd too.
6665
6666         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6667
6668         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6669
6670         * mini.h (MonoCompile): Remove new_ir flag.
6671
6672         * regalloc.h regalloc.c: Remove unused code.
6673
6674         * cpu-*.md: Remove more unused opcodes.
6675
6676         * simple-cee-ops.h simple-mini-ops.h: Removed.
6677
6678         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6679         
6680 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * aliasing.h: Removed.
6683
6684         * *.c: Remove references to aliasing.h and inssel.h.
6685
6686         * mini.c: Remove additional unused functions.
6687
6688         * mini-ops.h cpu-*.md: Remove unused opcodes.
6689
6690 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6691
6692         Remove the old JIT code.
6693
6694         * inssel*.brg: Removed.
6695
6696         * ssa.c abcremoval.c aliasing.c: Removed.
6697
6698         * ssa2.c: Renamed to ssa.c.
6699
6700         * abcremoval2.c: Renamed to abcremoval.c.
6701
6702         * *.c: Removed all !cfg->new_ir code.
6703
6704         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6705         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6706
6707         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6708         
6709 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6712         to simplify the code and cut back on the number of global symbols in the AOT
6713         file.
6714         
6715         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6716
6717 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6718
6719         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6720         with the got/got_info tables.
6721
6722         * mini.h: Bump AOT file format version.
6723         
6724         * unwind.h: New file, contains definitions for stack unwinding.
6725
6726         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6727         to cfg->unwind_ops.
6728         
6729         * aot-compiler.c: Generalize the emitting of unwind information to use the
6730         information in cfg->unwind_ops.
6731
6732         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6733
6734         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6735         AOT method frames. Enable writing symbols for methods by default.
6736
6737 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6738
6739         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6740         and make it work with vectors of element sizes 1, 2 and 4.
6741
6742         * simd-intrinsics.c: Enable getter for all vectors with element size
6743         1, 2 or 4.
6744
6745         * simd-methods.h: Add the names of other getters.
6746
6747         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6748
6749         * cpu-x86.md: Same.
6750
6751         * mini-x86.c: Same.
6752
6753 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6754
6755         * mini-ppc.h: portability fix.
6756
6757 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6758
6759         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6760         buggy and will overwrite it.
6761
6762 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6763
6764         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6765         Use it to emit local symbols for all methods so AOTed methods show up with
6766         their full name in gdb/valgrind output.
6767
6768 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6769
6770         * mini-ppc.c: portability fixes.
6771
6772 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6773
6774         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6775         entries out of the if (!generic_shared...) code so it is always done.
6776         (mono_class_init_trampoline): Do the patching when running under valgrind
6777         too, newer versions of valgrind have no problems with it.
6778
6779 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6782         further sections.
6783
6784 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6785
6786         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6787         filters.
6788
6789 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6790
6791         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6792
6793 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6794
6795         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6796
6797         * cpu-x86.md: Same.
6798
6799         * mini-x86.c: Same.
6800
6801         * simd-intrinsics.c: Same.
6802
6803 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6806
6807 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6808
6809         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6810         to work with more Vector types.
6811
6812 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6813
6814         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6815         store the elemens directly instead of using and intermediate.
6816
6817 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6818
6819         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6820
6821         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6822         to preserve %eax for aot plt trampolines.
6823
6824         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6825         (encode_method_ref): Flag synchronized methods so they won't go through
6826         the AOT trampoline.
6827
6828         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6829         wrappers.
6830
6831         * cpu-ia64.md (jmp): Increase max length.
6832
6833 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6836         open generic classes.
6837
6838         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6839
6840         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6841         box+brtrue optimization since it causes test failures on x86.
6842
6843 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6846
6847         * cpu-x86.md: Same.
6848
6849         * mini-x86.c: Same.
6850
6851         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6852         for simd ctor values. 
6853
6854         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6855         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6856
6857 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6858
6859         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6860         LogicalRightShift.
6861
6862         * simd-instrincs.c: Same.
6863
6864         * basic-simd.cs: Same.
6865
6866 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6867
6868         * ratests.cs: Add more tests.
6869
6870         * regalloc2.c (add_spill_code): Handle more corner cases.
6871
6872 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6875         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6876         both the source an destination of an instruction.
6877
6878 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6879
6880         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6881         wapihandles.c: more portability changes.
6882
6883 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6884
6885         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6886         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6887         safe to execute in a signal handler and the kernel provides better
6888         the info in /proc/self/smaps. Avoid the assert on sigaction during
6889         cleanup.
6890
6891 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6892
6893         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6894         do the bblock linking hack if it is actually needed.
6895
6896         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6897         up linking.
6898
6899         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6900         crash problem is fixed.
6901
6902         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6903         bblocks.
6904
6905         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6906         for catch clauses.
6907         (mini_method_compile): Set the starting value of next_vreg to 
6908         MAX_IREGS + MAX_FREGS when using globalra.
6909
6910         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6911         filter clauses with BB_EXCEPTION_HANDLER.
6912
6913         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6914
6915 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6916
6917         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6918         space for stdcall.  Fixes regressions on Win32.
6919
6920 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6923         bblocks.
6924         (linear_scan): Remove an assert which doesn't seem to be needed.
6925
6926         * local-propagation.c (mono_local_deadce): Avoid a call to
6927         MONO_DELETE_INS which would screw up the instruction linking.
6928
6929         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6930
6931         * regalloc2.c: Upgrade to work the current JIT code.
6932
6933 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6936         case.
6937
6938         * aot-runtime.c: Remove some dead code.
6939
6940         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6941         consistency.
6942         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6943
6944         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6945         trampolines using sscanf since atoi doesn't work on large unsigned values.
6946
6947         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6948         Initialize code_size.
6949
6950 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6951
6952         * method-to-ir.c (mini_emit_inst_for_method): Make
6953         Interlocked.CompareExchange work for Int arguments on 32 bit
6954         archs, as well.
6955
6956 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6957
6958         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6959
6960 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6961
6962         * main.c Fix MSVC build.
6963
6964         Contributed under MIT/X11 license.
6965
6966 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6967
6968         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6969         alignment larger than 8 bytes are aligned correctly, too.
6970
6971         * mini.c: Honor the min_align field of MonoClass when laying out
6972         the stack.
6973
6974 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6977
6978         * aot-compiler.c (emit_plt): Fix a warning.
6979         
6980         * aot-compiler.c: Implement ARM support in the binary writer.
6981
6982 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * basic-simd.cs: Add test for getter with byref arg.
6985         Fix the naming of a few tests.
6986         Add missing checks to a test.
6987
6988 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6989
6990         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6991
6992         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6993         most of the full-aot support for monitor enter/exit trampolines.
6994
6995         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6996         enter/exit trampoline creation functions.
6997
6998         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6999         make dist.
7000
7001 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7002
7003         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7004         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7005         implement the needed functionality without adding crap to the runtime.
7006
7007 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7008
7009         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7010         non-x86 builds.
7011
7012         * mini.c (mono_build_date): New global version holding the build date in
7013         string format.
7014         
7015         * Makefile.am (buildver.c): Generate a file containing the build date.
7016
7017         * main.c: Set the build date from the generated file.
7018
7019         * mini.c (mono_get_runtime_build_info): New helper function returning build
7020         information in a string format.
7021         
7022         * driver.c (mono_main): Print the build date in --version.
7023
7024         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7025         file when the bind-to-runtime-version option is used.
7026
7027 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7028
7029         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7030
7031 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7032
7033         * simd-methods.h: Rename prefetch methods.
7034
7035         * simd-intrinsics.c: Same.      
7036
7037 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7038
7039         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7040         sizes.
7041
7042 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * aot-compiler.c: Use the bundled elf header files instead of depending on
7045         the system one.
7046         
7047         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7048         mempool.
7049
7050         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7051         on every call.
7052
7053 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7054
7055         * cpu-x86.md: Add store nta ops.
7056
7057         * mini-ops.h: Same.
7058
7059         * mini-x86.c: Same.
7060
7061         * mini.h: Add an enum for simd prefetch modes.
7062
7063         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7064         of store. Use the changed code to support store nta.
7065
7066         * simd-intrinsics.c: Add prefetch ops for all vector types.
7067
7068 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7069
7070         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7071         threads.
7072         
7073         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7074         names.
7075
7076         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7077         trampolines.
7078
7079 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7080
7081         * mini-x86.c: Fixed commit.
7082
7083 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7086
7087 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7088
7089         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7090         and MONITOR_EXIT, for the ASM fastpaths.
7091
7092         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7093         available.
7094
7095         * mini.c, patch-info.h: Signature and patch infos for
7096         Monitor.Enter/Exit trampolines.
7097
7098         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7099
7100         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7101         Monitor.Enter/Exit ASM fastpath for Linux.
7102
7103 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7104
7105         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7106
7107         * objects.cs: Add a new test.
7108         
7109         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7110
7111         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7112         if MONO_LOG_LEVEL is set.
7113
7114         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7115
7116         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7117
7118         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7119         
7120         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7121         of file offsets. Align the sections belonging to the data segment to 
7122         PAGESIZE.
7123
7124 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7127         elf.h. Port it to amd64.
7128
7129 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7130
7131         * driver.c: Enable SIMD by default.
7132
7133 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7134
7135         * cpu-x86.md: Add prefetch op.
7136
7137         * mini-ops.h: Same.
7138
7139         * mini-x86.c: Same.
7140
7141         * mini.h: Add an enum for simd prefetch modes.
7142
7143         * simd-methods.h: Add prefetch function names.
7144
7145         * simd-intrinsics.c: Add prefetch ops for all vector types.
7146
7147 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7148
7149         * aot-compiler.c (emit_bytes): Speed this up a little.
7150
7151 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * aot-compiler.c: Add JIT time etc. statistics.
7154         
7155         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7156
7157         * mini.h (MonoCompile): Add 'got_offset' field.
7158
7159         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7160         method_got_offsets array.
7161
7162         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7163         wrappers.
7164
7165         * aot-compiler.c (compile_method): Add generic method instances referenced
7166         by the method to the list of methods to be compiled, this is required so if
7167         A<T> references B<T>, and another assembly references A<int>, then it will
7168         also get a copy of B<int>.
7169
7170         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7171         when checking for monitor enter/exit.
7172
7173 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7174
7175         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7176         for Monitor.Enter and Monitor.Exit if enabled.
7177
7178         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7179         Solaris.
7180
7181 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7182
7183         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7184         of an OP_MOVE. Fixes #440046.
7185
7186         * basic-long.cs: Add a new test.
7187
7188 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7189
7190         * mini.h: Add synchronization note for the managed counter-part.
7191
7192         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7193         returns the simd caps of the current cpu.
7194
7195 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7196
7197         * basic-simd.cs: Remove Console.WriteLine.
7198
7199 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7200
7201         * basic-simd.cs: New tests for Vector2ul.
7202
7203 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7204
7205         * simd-intrinsics.c: Add new vector type Vector2ul.
7206
7207 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * basic-simd.cs: New tests for Vector2l.
7210
7211 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7212
7213         * cpu-x86.md: Add long version of most packed int ops.
7214
7215         * mini-ops.h: Same.
7216
7217         * mini-x86.h: Same.
7218
7219         * simd-intrinsics.c: Add new vector type Vector2l.
7220
7221 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7224
7225         * simd-methods.h: Remove SN_op_BitwiseXor.
7226
7227 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7230         alignment.
7231
7232 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * basic-simd.cs: Test for Vector2d.
7235
7236         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7237         value.
7238
7239 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7240
7241         * cpu-x86.md: Add double version of all packed float ops.
7242
7243         * mini-ops.h: Same.
7244
7245         * mini-x86.h: Same.
7246
7247         * simd-intrinsics.c: Add new vector type Vector2d.
7248
7249         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7250
7251         * simd-methods.h: Add Duplicate.
7252
7253 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7254
7255         * basic-simd.cs: Test for packing with signed saturation.
7256
7257 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7258
7259         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7260         found in the TYPESPEC table.
7261
7262 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7263
7264         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7265         too.
7266
7267         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7268
7269         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7270         instead of the RVA, since the RVA can be changed by tools like the cil 
7271         stripper.
7272
7273         * method-to-ir.c (mono_method_to_ir2): Ditto.
7274
7275         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7276         (deserialize_variable): Ditto.
7277
7278 2008-10-25  Martin Baulig  <martin@ximian.com>
7279
7280         * debug-mini.c (write_variable): Use
7281         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7282
7283 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7284
7285         * cpu-x86.md: Add unsigned variants of packd and packw.
7286
7287         * mini-ops.h: Same.
7288
7289         * mini-x86.h: Emit the right instruction for packd and packw.
7290         Add unsigned variants of packd and packw.
7291
7292         * simd-intrinsics.c: Packd and packw were used in place of their
7293         unsigned variants. Change that.
7294         Add intrinsics for (Signed)PackWithSignedSaturation.
7295
7296         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7297
7298 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7301
7302 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7303
7304         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7305
7306         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7307
7308         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7309         sse instructions.
7310
7311         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7312
7313 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7314
7315         * method-to-ir.c, mini.c: Special casing for the synchronized
7316         wrapper for the ldtoken+GetTypeFromHandle case.
7317
7318 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7321
7322         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7323         created/split bblocks.
7324
7325 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7326
7327         * mini-ops.h: Add packed signed mul high.
7328         
7329         * cpu-x86.md: Same.
7330
7331         * mini-x86.c (mono_arch_output_basic_block): Same.
7332
7333         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7334
7335         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7336
7337 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7338
7339         * basic-simd.cs: Tests for Vector16sb.
7340
7341 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7342
7343         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7344
7345 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7346
7347         * mini-ops.h: Add packed signed min, max and compare greater.
7348         
7349         * cpu-x86.md: Same.
7350
7351         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7352         saturation.
7353
7354         * simd-methods.h: Add CompareGreaterThan.
7355
7356         * simd-methods.h: Remove CompareEquals.
7357
7358         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7359
7360         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7361
7362         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7363         CompareEqual.
7364
7365 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7366
7367         * basic-simd.cs: Fix tests due to change in the API.
7368
7369 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7372
7373 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7374
7375         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7376
7377         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7378         inst_offset as this has invalid values for LDADDR.
7379
7380 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7381
7382         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7383
7384         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7385
7386 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7387
7388         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7389         for accessing field->data.
7390
7391 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7392
7393         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7394
7395 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7396
7397         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7398
7399         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7400
7401 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7402
7403         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7404         from the cfg mempool.
7405
7406 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7407
7408         * basic-simd.cs: Tests for new methods in Vector8us.
7409
7410 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7411
7412         * mini-ops.h: Add multiply and store high.
7413         
7414         * cpu-x86.md: Same.
7415
7416         * mini-x86.c (mono_arch_output_basic_block): Same.
7417
7418         * simd-methods.h: Same.
7419
7420         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7421         and CompareEqual.
7422
7423 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7424
7425         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7426         mono_class_setup_vtable ().
7427
7428         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7429         mono_class_get_vtable_entry () for accessing klass->vtable.
7430
7431         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7432
7433         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7434         found.
7435
7436         * method-to-ir.c (mono_save_token_info): Don't save references made from
7437         wrappers.
7438
7439         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7440         of generic instances.
7441
7442         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7443
7444 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7445
7446         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7447         OP_JMP depends on the method signature.  Calculate it properly.
7448
7449 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7450         
7451         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7452         called directly.
7453
7454         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7455         instances.
7456         (emit_extra_methods): Add another table mapping method indexes to 
7457         offsets in the extra_method_info table.
7458
7459         * mini.h: Bump AOT file format version.
7460         
7461         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7462         and mono_aot_get_method_from_token () into one function.
7463
7464 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7467         separate counter.
7468
7469 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7472         methods.
7473
7474         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7475         disable_aot.
7476
7477         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7478
7479         * mini.h: Bump aot file format version.
7480
7481         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7482         AOT file can contain native code for methods which are not in the METHOD
7483         table. Generate code for non-sharable generic instances of generic methods
7484         found in the METHODSPEC table.
7485         
7486         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7487         encoding generic type handles.
7488
7489         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7490         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7491
7492         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7493         macros + MONO_ADD_INS.
7494
7495         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7496         context as well.
7497
7498         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7499
7500         * mini.h: Bump aot file format version.
7501
7502         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7503
7504 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7505
7506         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7507         platforms, with definable stack alignment value.  Set to 16 now
7508         for all platforms.
7509
7510         * mini.c, mini.h, driver.c: Command line option for disabling
7511         stack alignment.
7512
7513 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * basic-simd.cs: Tests for new methods in Vector4ui.
7516
7517 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7518
7519         * mini-ops.h: Add packed int shuffle.
7520         
7521         * cpu-x86.md: Same.
7522
7523         * mini-x86.c (mono_arch_output_basic_block): Same.
7524
7525         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7526         extract mask, max, min, shuffle.
7527
7528         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7529
7530 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7531
7532         * basic-simd.cs: Tests for new methods in Vector8us.
7533
7534 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7535
7536         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7537         RuntimeTypeHandle, not a TypedReference.
7538
7539 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7540
7541         * simd-intrinsics.c: remove relocations.
7542
7543 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7546         optimizations from the x86 backend.
7547
7548 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7549
7550         * simd-methods.h, simd-intrinsics.c: debloat method names and
7551         prepare for no relocations.
7552
7553 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7554
7555         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7556         
7557         * cpu-x86.md: Same.
7558
7559         * mini-x86.c (mono_arch_output_basic_block): Same.
7560
7561         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7562         extract mask, max, min and sum of absolute differences.
7563
7564         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7565         method name.
7566
7567 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7568
7569         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7570         Renamed one test for consistency.
7571
7572 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7575         fix to the code that deal with other blocks.
7576
7577 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7578
7579         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7580
7581 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7582
7583         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7584         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7585         able to process the source reg.
7586
7587 2008-10-16  Martin Baulig  <martin@ximian.com>
7588
7589         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7590
7591         * inssel.brg: Add `OP_HARD_NOP'.
7592
7593         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7594
7595         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7596         `OP_HARD_NOP' instruction when running inside the debugger.
7597
7598         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7599         `OP_HARD_NOP' instruction when running inside the debugger.
7600
7601 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7602
7603         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7604         now works. The issue with the regalloc tripping up no longer
7605         happens.
7606
7607         * simd-intrinsics.c (load_simd_vreg): Same.
7608
7609 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7610         
7611         * basic-simd.cs: Tests for new Vector8ui methods.
7612
7613 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7614
7615         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7616         only for type. This fixes crashes where MonoInst::klass is checked
7617         for ops of type != VTYPE or OBJ.
7618
7619         * simd-intrinsics.c (load_simd_vreg): Same.
7620
7621 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7622
7623         * mini-ops.h: Add ops for packed shuffle/max/avg and
7624         extract mask.
7625         
7626         * cpu-x86.md: Same.
7627
7628         * mini-x86.c (mono_arch_output_basic_block): Same.
7629
7630         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7631         extract mask.
7632
7633         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7634         to emit extract mask op.
7635
7636         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7637         to emit word shuffles.
7638
7639 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7640
7641         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7642         the largest alignment needed by a variable, but at least
7643         sizeof(gpointer).
7644
7645 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7646
7647         * basic-simd.cs: Tests for the fixes in the last commit.
7648
7649 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7650
7651         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7652         no longer handles STACK_PTR input.
7653
7654         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7655
7656         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7657         get_simd_vreg   but handles STACK_PTR input.
7658
7659         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7660         as the input can be an arbitrary pointer.
7661
7662         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7663         LDADDR local optimization directly otherwise use a store op.
7664
7665 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * basic-simd.cs: Tests for dup low and dup high.
7668
7669 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7670
7671         * mini-ops.h: Add dup low and dup high ops.
7672         
7673         * cpu-x86.md: Same.
7674
7675         * mini-x86.c (mono_arch_output_basic_block): Same.
7676
7677         * simd-intrinsics.c (vector4f_intrinsics): Same.
7678
7679 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7680
7681         * basic-simd.cs: Tests for recently added functionality.
7682
7683 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * mini-ops.h: Add remaining sse1 fp ops.
7686         
7687         * cpu-x86.md: Add remaining sse1 fp ops.
7688
7689         * mini-x86.c (mono_arch_output_basic_block): Same.
7690
7691         * mini.h: Add enum for simd FP compare conditions.
7692
7693         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7694
7695         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7696         so the backed can generate the appropriate op.
7697
7698 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7699         This patch squeese one more byte from the SimdIntrinsc struct.
7700
7701         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7702         a a shift amount intead of simply or'ing it.
7703
7704         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7705
7706         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7707         byte so we can have an aditional flags field without increasing struct size.
7708
7709         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7710         against the simd_supported_versions bitmask.
7711
7712         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7713
7714 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7715
7716         * mini.c: remove rawbuffer code (the only use here is unsafe because
7717         it takes locks during signal handling and the kernel now provides much
7718         better info in proc/pid/smaps these days).
7719
7720 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7721
7722         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7723         OP_X86_PUSH_OBJ. Fixes #434620.
7724
7725         * objects.cs: Add a test.
7726         
7727 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7728
7729         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7730         that the packuswb/packusdw don't work with unsigned numbers for what
7731         would be negative numbers in signed format.
7732
7733         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7734         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7735
7736         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7737
7738         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7739
7740         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7741
7742         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7743
7744         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7745         add more ops.
7746
7747         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7748         version as the enum in mini.h.
7749
7750         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7751         for sse3 ops, check the simd_version field if present. This way the code
7752         works with all versions of sse.
7753
7754 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * simd-intrinsics.c: Fixed intrinsic name typo.
7757
7758         * mini.h: Added missing simd exported function.
7759
7760         * basic-simd.cs: Added tests for Vector4ui.
7761         Fixed broken test for Vector16b.
7762
7763 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7766         the max length to 64.
7767
7768 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7769
7770         * method-to-ir.c: Only do the fast virtual generic method call for
7771         non-wrapper methods.
7772
7773         * mini.h, mini-trampolines.c: The new generic virtual remoting
7774         trampoline handles virtual method calls via the vtable (as done by
7775         the fast virtual generic method calls) to remoting proxies.
7776
7777         * mini.c (mono_jit_create_remoting_trampoline): For generic
7778         methods reate a generic virtual remoting trampoline.
7779
7780         * mini-amd64.h: Enable fast virtual generic method calls again.
7781
7782 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7783
7784         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7785         restore registers when doing tail calls.
7786
7787 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7790         Vector4ui.
7791
7792 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7795
7796 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7799
7800 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * basic-simd.cs: Retrofit for API changes.
7803
7804 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7805
7806         * mini-ppc.c: Handle integer stack arguments for tail calls.
7807
7808 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * optflags-def.h: Removed sse3 optimization.
7811
7812         * driver.c: Same.
7813
7814         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7815         sse3.
7816
7817         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7818
7819         * mini.h: Added enumeration with simd versions.
7820
7821         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7822         for detecting SSE3.
7823
7824         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7825
7826         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7827
7828 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7829
7830         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7831
7832         * basic-simd.cs: Fixed test naming.
7833
7834 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7835
7836         * mini-ops.h: Added ops for packed and saturated math, shifts
7837         and packing/unpacking.
7838
7839         * cpu-x86.md: Added descriptors for the above ops.
7840
7841         * mini-x86.c: Added code to emmit the above ops.
7842
7843         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7844
7845 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7846
7847         * aot-compiler.c (compile_method): Enable AOT for generic code.
7848
7849         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7850
7851 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7852
7853         * mini.c: add a workaround for a common screwup that ends up blamed
7854         to mono (other processes blocking signal delivery).
7855
7856 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7859         in the LDFLD/STFLD opcodes. Fixes #432673.
7860
7861         * iltests.il.in: Add a new test.
7862
7863 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7864
7865         * mini-arm.c: attach the thread in unmanaged->managed transitions
7866         using delegates (bug #433148).
7867
7868 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7869
7870        * basic-simd.cs: Use new ShuffleSel constants.
7871
7872 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7873
7874         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7875
7876         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7877         only disable simd intrinsics if no sse2 is detected.
7878
7879         * optflags-def.h: Added sse3.
7880
7881         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7882         is disabled.
7883
7884 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7887         when adding delegate-invoke wrappers.
7888
7889 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7890
7891         * Makefile.am: Reenable the simd tests.
7892
7893 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7894
7895         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7896           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7897           other vreg is allocated to that hreg.
7898
7899         Contributed under MIT/X11 license.
7900
7901 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7902
7903         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7904         yet checked in.
7905
7906 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7907
7908         * basic-simd.cs: New test suite for SIMD intrinsics.
7909
7910         * Makefile.am: Added new tests.
7911
7912 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7913
7914         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7915
7916         * mini-ops.h: Same.
7917
7918         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7919
7920         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7921         using SSE2 aware opcodes.
7922
7923         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7924         is enabled, this code path is only reachable if conversion ops are emmited after
7925         mono_method_to_ir.
7926
7927         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7928
7929         This optimization saves 6 bytes per conversion against the old version.
7930
7931 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7932
7933         * aot-compiler.c (compile_method): Don't skip methods referencing 
7934         generic methods without a corresponding entry in token_info_hash, since
7935         encode_method_ref () can handle all generic methods now.
7936
7937         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7938         generic context is set.
7939         
7940         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7941         generic sharing of LDTOKEN.
7942
7943 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7944
7945         * mini-amd64.h: Temporarily disabled fast virtual generic method
7946         calls because it breaks the System.Runtime.Remoting tests.
7947
7948 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7949
7950         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7951
7952         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7953         so inlining actually works.
7954         (check_inline_caller_method_name_limit): Ditto.
7955
7956 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7957
7958         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7959         64 bit safety (from Olaf Hering and Andreas Farber).
7960
7961 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7962         
7963         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7964         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7965         unused virtual call support code.
7966
7967         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7968         
7969         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7970         which can't use aot trampolines.
7971         (decode_patch): Don't create aot trampolines for methods which can't use
7972         them.
7973
7974         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7975         use aot trampolines.
7976
7977         * mini.h: Bump AOT image format version.
7978         
7979 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7982         to save_token_info () since cmethod is inflated for constrained calls.
7983
7984         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7985
7986 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7987
7988         * Makefile.am: Add build rules for ppc64.
7989         This avoids the build failing at pedump with unresolved symbols
7990         due to lack of arch_sources. Instead it will now fail earlier
7991         due to lack of cpu-ppc64.md.
7992
7993         Contributed under MIT/X11 license.
7994
7995 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7996
7997         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7998         tail calls.
7999
8000         * iltests.il.in: Add test case for tail call with many arguments.
8001
8002 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8003
8004         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8005         to the fast virtual generic method code until the aot case is fixed.
8006
8007 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8008
8009         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8010
8011 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8012
8013         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8014         thunks.
8015
8016 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8017         
8018         * simd-intrinsics.c: Forgot to add this one.
8019
8020         * mini-codegen.c: Fix macro in case SIMD is not supported.
8021
8022 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8023         
8024         This patch land initial JIT support for simd intrinsics.
8025
8026         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8027
8028         * Makefile.am: Added simd-intrinsics.c
8029
8030         * simd-intrinsics.c: New file with simd instrinsic related
8031         code.
8032
8033         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8034
8035         * cpu-x86.md: Add simd related instructions.
8036
8037         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8038
8039         * driver.c: Added two new --regression variants.
8040
8041         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8042
8043         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8044
8045         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8046         extract some complicated logic to helper functions.
8047
8048         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8049
8050         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8051
8052         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8053         the specialized simplification pass.
8054
8055         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8056
8057         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8058
8059         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8060         table.
8061
8062         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8063         if MONO_ARCH_NEED_SIMD_BANK is defined.
8064
8065         * mini-ops.h: Added the new simd ops.
8066
8067         * mini-x86.c: Added mono_arch_xregname.
8068
8069         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8070
8071         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8072
8073         * mini-x86.h: Define simd related MONO_ARCH macros.
8074
8075         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8076
8077         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8078
8079         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8080         MONO_CLASS_IS_SIMD to deal with simd related IR.
8081
8082         * mini.h (MonoInst): Added spill_var to the backend union.
8083
8084         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8085
8086         * mini.h: Added forward declarations of the new simd fuctions.
8087
8088         * optflags-def.h: Added new optimization names SIMD.
8089
8090         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8091
8092         * regalloc.h: Added support for working with 3 register banks.
8093
8094         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8095
8096         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8097
8098 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8099
8100         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8101
8102 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8103
8104         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8105         instead of one on 64 bit systems.
8106
8107         * method-to-ir.c: Remove unused includes.
8108
8109 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8112         cfg->used_int_regs, since the two are different on arm.
8113
8114 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8115
8116         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8117         mono_method_get_vtable_index() to get the vtable index.
8118
8119 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8120
8121         * method-to-ir.c (mono_method_to_ir2): Don't create native
8122         wrappers for array methods, because they're never called (and if
8123         they were called they wouldn't work).
8124
8125 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8126
8127         * method-to-ir.c (mono_method_to_ir2): Array methods are
8128         special-cased and must not be invoked indirectly via the (M)RGCTX
8129         when generic sharing is turned on.  Fixes #431413.
8130
8131 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8132
8133         * method-to-ir.c: When generic sharing is active, call
8134         non-interface virtual generic methods via the standard trampoline.
8135
8136         * mini-trampolines.c: Handle virtual generic shared methods.
8137
8138         * mini.h, mini-x86.c, mini-x86.h: New argument for
8139         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8140         method thunks and which is the trampoline to call if the lookup
8141         fails.  Enable the virtual generic method thunk for x86.
8142
8143         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8144         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8145         argument but assert that it's NULL, because these archs don't yet
8146         implement the virtual generic method thunk.  Changes in the IMT
8147         thunk data structures.
8148
8149 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8150
8151         * aot-compiler.c (emit_globals): Avoid invalid characters in
8152         the static linking symbol.
8153
8154         * objects.cs: Add a test for the range check optimization. Fix warnings.
8155
8156         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8157         optimization from the current JIT.
8158
8159         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8160         later in decompose_array_access_opts () to allow more optimizations.
8161
8162         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8163         mono_decompose_soft_float () for consistency.
8164
8165         * mini-ops.h: Fix arguments of OP_STRLEN.
8166
8167         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8168         into a separate function.
8169         (reset_cast_details): Ditto.
8170         (handle_unbox): Save cast details. Fixes #431254.
8171
8172         * method-to-ir.c: Remove some obsolete FIXMEs.
8173
8174 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8175
8176         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8177
8178 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8179
8180         * mini-codegen.c: More work on macros to make them
8181         ready for multiple regbanks.
8182
8183 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8184
8185         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8186
8187         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8188
8189 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8190
8191         * mini-codegen.c (mono_spillvar_offset): Proper support for
8192         multiple regbanks.
8193
8194 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8195
8196         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8197         the stack overflow changes.
8198
8199 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8200
8201         * mini-codegen.c: Make all bank macros depend on reg_bank.
8202
8203         * mini-codegen.c (mono_local_regalloc): Make free mask
8204         initialization regbank aware.
8205
8206 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8207
8208         * mini-codegen.c (mono_local_regalloc): Extract callee
8209         mask selection to a function and make it regbank aware.
8210
8211 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8212
8213         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8214         code to deal with many regbanks.
8215
8216 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8217
8218         * mini-codegen.c: More fp->regbank changes.
8219
8220 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8223         of a hardcoded constant.
8224
8225 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8226
8227         * method-to-ir.c (type_from_stack_type): Fix typo.
8228
8229 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * mini-ia64.c (emit_move_return_value): Convert float return values to
8232         double.
8233
8234         * objects.cs: Add a new test.
8235         
8236         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8237         VARARG methods to fix an assert later.
8238
8239         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8240         end so it at least compiles.
8241
8242 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8243
8244         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8245
8246 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8247
8248         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8249         optimization to a new function (emit_optimized_ldloca_ir) and enable
8250         it for both ldloca and ldloca_s.
8251
8252 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8255         gshared CASTCLASS code.
8256
8257         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8258         amd64, where the libc stack unwinder encounters stack frames referring to
8259         native code in unmapped memory.
8260
8261         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8262         sharing.
8263
8264         * generics.cs: Add new test.
8265
8266 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8267
8268         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8269         add a check that one of the ARM_FPU_ constants is defined.
8270
8271         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8272         
8273         * mini-exceptions.c: Fix build on non-altstack platforms.
8274
8275         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8276         sharing of vtypes.
8277
8278         * ir-emit.h: Add a comment to NEW_PCONST.
8279
8280         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8281
8282         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8283
8284         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8285         after the changes to MonoJitDomainInfo.
8286
8287 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8288
8289         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8290
8291 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8292
8293         * mini-ppc.c: Compiler warning fixes.
8294
8295 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8296
8297         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8298         for pinvokes.
8299
8300 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8301
8302         * exceptions-ppc.c, mini-ppc.h: Compile
8303         mono_arch_handle_altstack_exception() on Darwin, too.
8304
8305 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8306
8307         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8308         work on archs which don't have generic sharing implemented, only
8309         without the vtable_arg.
8310
8311 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8312
8313         * mini.c: Added comment explaining why delegate ctor icall
8314         wrappers are compiled.
8315
8316 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8317
8318         * mini.c: Don't produce trampolines to delegate ctor icall
8319         wrappers but compile them upfront.
8320
8321 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8322
8323         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8324         runtime-set function when going back to managed code. Currently this
8325         is used to set back the protection on the soft ovf pages and/or to
8326         throw the stack overflow exception that happened in unmanaged code.
8327
8328 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8329
8330         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8331         runtime-set function when going back to managed code. Currently this
8332         is used to set back the protection on the soft ovf pages and/or to
8333         throw the stack overflow exception that happened in unmanaged code.
8334
8335 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8336
8337         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8338         the support code for restoring stack protection after stack overflows
8339         that happen in unmanaged code. Don't set the exec permission on the
8340         soft overflow area.
8341
8342 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8343
8344         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8345         delegate->method_ptr is set. Fixes #428054.
8346
8347 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8348
8349         * tests.cs: Rename to ratests.cs.
8350
8351         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8352         emit_get_rgctx_... functions.
8353
8354 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8355
8356         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8357
8358 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8359
8360         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8361         before asserting that method is sharable.
8362
8363 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8364
8365         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8366         whether method needs a static RGCTX wrapper used instead of
8367         complex conditions.
8368
8369         * generic-sharing.c, mini.h: A few functions moved to
8370         metadata/generic-sharing.c.
8371
8372 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8373
8374         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8375         Generic code sharing for value types, which essentially means
8376         treating value type methods like static methods.  The RGCTX is
8377         passed in the same way.
8378
8379 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8382         opcode when creating multi-dimensional arrays of open types.
8383
8384         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8385         open generic types.
8386
8387         * generics.cs: Add a test.
8388
8389         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8390
8391 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8392
8393         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8394
8395         * mini.c (mini_method_compile): Set it when running under the debugger. 
8396
8397         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8398         vreg optimization if the flag is set.
8399
8400         * driver.c (mono_main): Add --attach= option to pass options to
8401         the attach agent.
8402
8403         * mini.c (sigquit_signal_handler): Start the attach agent.
8404
8405         * ssapre.c: Disable this to save space since it is not yet ported to
8406         linear IR.
8407
8408         * regalloc2.c: Disable this to save space.
8409
8410         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8411
8412 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8413
8414         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8415         the -v option useful again.
8416
8417 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8418
8419         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8420         --break-at-bb.
8421
8422         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8423         arrays of arrays. Fixes #428406.
8424
8425         * method-to-ir.c (mini_emit_castclass): Ditto.
8426
8427         * objects.cs: Add new test.
8428         
8429 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8430
8431         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8432         was wrong at it choked against target_type_is_incompatible for byref types.
8433
8434 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8435
8436         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8437         places.
8438
8439 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8440
8441         * mini-exceptions.c: update a few more exceptions-related counters.
8442
8443 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8444
8445         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8446         new functions to allocate from persistent mempools.
8447
8448 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8449
8450         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8451         multiple register banks in the future.
8452
8453         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8454
8455 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8456
8457         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8458
8459         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8460
8461         * mini.h: Export type_to_eval_stack_type.
8462
8463         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8464         is only ins->klass of byref types.
8465
8466 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8469         (mini_emit_memcpy2): Ditto.
8470
8471         * mini-amd64.c: Fix a warning.
8472
8473 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8474
8475         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8476         linking.
8477
8478 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8479
8480         * method-to-ir.c: Extract stloc micro-optimization to a
8481         function and apply it to all cases.
8482
8483 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8484
8485         * method-to-ir.c: Don't fail generic code sharing in cases we
8486         already support.
8487
8488 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8491
8492 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8493
8494         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8495         implementation.
8496
8497 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8498
8499         * trace.c: make tracing more useful and correct, with per-thread
8500         id and indent info.
8501
8502 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8503
8504         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8505         doing a method call and the argument is an R4.
8506
8507 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8510         generic methods.
8511
8512 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8513
8514         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8515
8516 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8519         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8520
8521 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * driver.c: Add a --agent argument (not supported yet) to load managed
8524         agent assemblies before loading the main assembly, similarly to how the
8525         Java VM handles agents.
8526
8527 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8528
8529         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8530         function to do stack layout of local variables.
8531
8532 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8533
8534         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8535         calculation.
8536
8537 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8540         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8541         JIT if DISABLE_JIT is defined.
8542
8543         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8544         defined.
8545
8546 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8547
8548         * iltests.il.in: Disable the fconv test on PPC (the result is
8549         undefined according to ECMA).
8550
8551 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8552
8553         * iltests.il.in: Enable tail call tests for PPC.
8554
8555         * mini.h: Add variable for storing incoming valuetype argument
8556         addresses for tail calls.
8557
8558         * mini-ppc.c: Implement valuetype arguments and return values for
8559         tailcalls on Linux.
8560
8561 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8562
8563         * mini-ppc.c: Partially implement tail calls (struct arguments and
8564         return values not supported).
8565
8566         * method-to-ir.c: Enable tail calls on PPC.
8567
8568 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8571         runtime-invoke wrappers to work around the problem of them getting
8572         assigned to a random class.
8573
8574         * aot-runtime.c (mono_aot_get_method): Ditto.
8575         
8576 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8579         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8580
8581 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8582
8583         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8584         until they're implemented properly.
8585
8586         * exceptions-ppc.c: Use arch-independent exception-handling code
8587         instead of custom one.
8588
8589         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8590         for Linear IR.
8591
8592         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8593
8594         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8595         applies when __powerpc__ is defined.
8596
8597 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8598
8599         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8600         methods to their code to avoid computing the full name of wrappers and
8601         doing a lookup in a string hash table.
8602
8603 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8604
8605         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8606         we identify bblocks before method_to_ir () is ran.
8607
8608         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8609         Also avoid optimizing branches pointing to themselves.
8610
8611         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8612
8613 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8614
8615         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8616
8617 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8620         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8621         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8622         'buf'.
8623
8624         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8625         jumped to the same entry in plt_jump_table.
8626
8627 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8628
8629         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8630         dynamic images.
8631
8632 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8633
8634         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8635         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8636         #421807.
8637
8638 2008-08-29  Geoff Norton  <gnorton@novell.com>
8639
8640         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8641         segment, and doesn't properly handle .space as .text.  Fixes
8642         AOT Mach/ARM
8643
8644 2008-08-29  Geoff Norton  <gnorton@novell.com>
8645
8646         * mini.c: Disable the mach exception handler when running on 
8647         ARM
8648
8649 2008-08-29  Geoff Norton  <gnorton@novell.com>
8650
8651         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8652         globals on Darwin/ARM
8653
8654 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8657         since too many things depend on it. Instead, call 
8658         mono_runtime_set_no_exec ().
8659         
8660         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8661         the new JIT.
8662
8663         * aot-compiler.c: Add an 'asm-only' AOT option.
8664
8665         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8666                 
8667         * aot-compiler.c (compile_method): Disable gshared support for now as it
8668         doesn't yet work.
8669
8670 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8671
8672         * mini-amd64.h : Fix a compiler warning.
8673
8674         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8675           Changed to use a callback function to retrieve the unwind info.
8676           This avoids problems observed when code blocks were removed by
8677           unloading an app domain.
8678
8679         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8680           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8681           to work properly.
8682
8683         Contributed under MIT/X11 license.
8684
8685 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8686
8687         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8688           case to keep the stack aligned to 8.
8689
8690         Contributed under MIT/X11 license.
8691
8692 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8695         avoid repeated linear searches.
8696
8697 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8698
8699         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8700         methods it can't handle.
8701         
8702         * aot-compiler.c (add_method): Avoid adding a method twice.
8703         (add_wrappers): Add runtime invoke wrappers for all methods.
8704
8705         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8706         function to create an aot-compatible version of this trampoline.
8707
8708         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8709
8710 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8711
8712         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8713
8714         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8715         with a generic sharing failure.
8716
8717         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8718
8719         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8720         CEE_RETHROW. Fixes #419634.
8721
8722         * mini.c (mono_method_to_ir): Ditto.
8723
8724         * exceptions.cs: Add a new test.
8725         
8726         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8727         to mono_type_stack_size_internal () since some callers might not pass in
8728         an rgctx.
8729
8730         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8731         instrument_prolog. Fixes #419878.
8732
8733         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8734         doubles in soft float mode volatile.
8735
8736 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8737
8738         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8739
8740         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8741         to handle soft float correctly.
8742
8743         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8744         the fast path.
8745
8746         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8747
8748         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8749         to sp, since the generics catch code requires it.
8750
8751         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8752         copying.
8753
8754         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8755         mono_arch_emit_imt_argument ().
8756
8757         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8758
8759         * mini-arm.c tramp-arm.c: Generic sharing updates.
8760
8761 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * mini-arm.c: Fix the arm build.
8764
8765         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8766         handling enums, generic instances and generic sharing.
8767         (mini_type_stack_size_full): Ditto.
8768
8769         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8770         
8771         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8772
8773         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8774
8775         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8776         trampolines.
8777
8778         * mini-arm.c: Various small generic sharing changes.
8779
8780         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8781         this for x86.
8782         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8783         custom code.
8784
8785         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8786         helper function to return a generic class init trampoline.
8787
8788         * method-to-ir.c mini.c: Use it.
8789         
8790         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8791         arch-specfic function to return a generic class init trampoline.
8792
8793         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8794         the GENERIC_CLASS_INIT custom code.
8795
8796         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8797         a fatal error, not a sharing failure.
8798
8799         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8800         needed.
8801
8802         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8803         trampoline argument from MONO_ARCH_VTABLE_REG.
8804
8805         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8806         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8807         argument, and pass the vtable in VTABLE_REG.
8808
8809         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8810         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8811         argument, and pass the vtable in VTABLE_REG.
8812         (mono_arch_create_trampoline_code_full): Remove some special casing for
8813         the rgctx fetch trampoline.
8814
8815         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8816         Fixes #419273.
8817
8818         * iltests.il: Add a test for it.
8819
8820 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8821
8822         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8823
8824         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8825         no longer needed.
8826
8827         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8828         use mono_jit_info_table_find () to avoid recursion.
8829         (mono_delegate_trampoline): Add a sync wrapper here.
8830
8831         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8832         here.
8833
8834         * mini.c (mono_method_to_ir): Ditto.
8835         
8836         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8837         add_sync_wrapper argument. Don't add a sync wrapper here.
8838         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8839
8840         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8841         
8842 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8843
8844         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8845           of nonvolatile registers back from MonoContext to CONTEXT.
8846
8847         Contributed under MIT/X11 license.
8848
8849 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8850
8851         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8852           arguments on Winx64 there are only 4 argument registers.  For this
8853           logic to work the last argument must be pulled from the stack.  
8854
8855         Contributed under MIT/X11 license.
8856
8857 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8860
8861         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8862         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8863         encode/decode_method_ref ().
8864
8865         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8866
8867         * aot-runtime.c (decode_patch): Ditto.  
8868
8869         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8870         MONO_PATCH_INFO_METHOD.
8871
8872         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8873         MonoGenericJitInfo.
8874
8875         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8876         MonoGenericJitInfo.
8877
8878         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8879
8880         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8881         one from the caller.
8882
8883         * aot-runtime.c (decode_generic_inst): New function to decode and
8884         return a interned generic inst.
8885         (decode_klass_ref): Use it.
8886         (decode_method_ref): Ditto.
8887
8888         * aot-compiler.c (emit_exception_debug_info): Save 
8889         jinfo->has_generic_jit_info too.
8890
8891 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8892
8893         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8894
8895         * iltests.il.in: Add a test for fconv_to_i.
8896
8897         * liveness.c: Disable the liveness2 pass for now to save space.
8898
8899         * regalloc2.c: Include mempool-internals.h to fix warnings.
8900
8901         * aot-compiler.c (encode_method_ref): Encode the context of generic
8902         instance methods.
8903
8904         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8905         the context saved in the aot file.
8906
8907         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8908
8909         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8910
8911         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8912         volatile so they won't be optimized away.
8913
8914 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8915
8916         * ssa.c:
8917         * ssa2.c:
8918         * mini.c:
8919         * regalloc2.c:
8920         * dominators.c: Remove duplicated functions that now are in
8921         mempool-internals.h.
8922
8923 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * aot-compiler.c: Fix warnings.
8926
8927         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8928
8929         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8930
8931         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8932         as the patch type.
8933
8934         * mini.c (mono_resolve_patch_target): Ditto.
8935         
8936         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8937         (encode_klass_ref): Add support for encoding VARs/MVARs.
8938
8939         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8940
8941         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8942         the handling of the got entries into a separate 'decode_got_entry' function.
8943         Add support for RGCTX_FETCH.
8944
8945         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8946         clobbered by the trampoline code.
8947
8948         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8949         not clobbered by the indirect calling code.
8950
8951 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8952
8953         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8954         to fix the build.
8955
8956 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8959         signature using the compilation mempool otherwise we would leak it.
8960
8961 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8964         mono_emit_abs_call ().
8965
8966         * patch-info.h: Add GENERIC_CLASS_INIT.
8967
8968         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8969
8970         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8971         as their target as a near call.
8972
8973         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8974         ABS handling code.
8975         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8976
8977         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8978         call to a runtime function described by a patch.
8979
8980         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8981         mono_emit_abs_call, this has the advantage that the ABS handling code in
8982         mono_codegen () can handle them both, and can handle other stuff in the
8983         future without additional code.
8984
8985         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8986         entry.
8987         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8988         abs addresses.
8989
8990         * mini.h: Add missing bblock related prototypes.
8991
8992         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8993         reverse_inst_list_len fields.
8994
8995         * mini.c: Refactor this file a bit by moving branch optimizations to 
8996         branch-opts.c.
8997
8998         * method-to-ir.c: Merge generic sharing changes missed earlier.
8999
9000         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9001
9002         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9003         shared patches. Process METHODCONST as a shared patch.
9004
9005         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9006         as it crashes on the 2.0 mscorlib.
9007
9008         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9009         to cause crashes.
9010         
9011         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9012         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9013         by IMT.
9014
9015         * aot-compiler.c: Reorganize the got handling code to be a bit more
9016         understandable.
9017
9018 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9019
9020         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9021         mono_patch_info_equals/hash, and use it to massively simplify
9022         get_plt_index ().
9023
9024         * mini.c (mono_patch_info_hash): Simplify this and add support for
9025         more patch types.
9026
9027         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9028
9029         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9030         handling code, since an offset is not enough to identify a trampoline.
9031
9032         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9033
9034 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9035
9036         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9037
9038         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9039
9040         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9041
9042         * decompose.c: PPC decompositions for various ops.
9043
9044         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9045
9046 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9049         call the generic trampoline code using a call, instead of a jump, to
9050         remove some special casing from the generic trampoline code.
9051
9052         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9053         (mono_codegen): Ditto.
9054
9055         * aot-compiler.c aot-runtime.c: Ditto.
9056
9057         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9058
9059         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9060         helper function to find the offset corresponding to a lazy fetch trampoline.
9061
9062         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9063         when doing generic sharing.
9064
9065         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9066         places.
9067         
9068         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9069         mini-trampolines.c to be with the other trampoline creation functions.
9070
9071         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9072         as it is equal to method->signature in most cases, add a 
9073         mono_emit_method_call_full variant which takes a signature and an imt
9074         argument as well.
9075
9076 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9077
9078         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9079         to this function, since it could be computed easily from the method 
9080         argument.
9081         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9082         more.
9083
9084         * method-to-ir.c mini.c: Remove references to 
9085         compile_generic_method_wo_context.
9086
9087         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9088         generic method calls.
9089         
9090         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9091         dimensional non-szarrays.
9092
9093         * mini.c (mini_init): Register mono_array_new_1.
9094
9095         * jit-icalls.c (mono_array_new_1): New jit icall.
9096
9097         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9098         pointing to the method.
9099
9100         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9101         method addresses belonging to METHOD_JUMP patches in the 
9102         jump_target_got_slot_hash.
9103         (mono_aot_load_method): Ditto.
9104
9105         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9106         METHOD_JUMP patches.
9107
9108         * mini.c (mini_create_jit_domain_info): New helper function which 
9109         initializes/frees domain->runtime_info.
9110         (mini_free_jit_domain_info): Ditto.
9111         (mini_init): Install the domain hook functions with the runtime.
9112
9113         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9114         information maintained by the JIT.
9115
9116         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9117         insertion into jump_table_hash into mono_codegen (), also implement proper
9118         locking.
9119
9120         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9121         tail calls, it is already done by the aot code.
9122         
9123         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9124         mechanism on amd64.
9125
9126         * iltests.il.in: Make the jmp test a bit more complex.
9127
9128         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9129         generic instances which doesn't have a token.
9130
9131         * aot-runtime.c (decode_method_ref): Ditto.
9132         
9133         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9134         can handle this case now.
9135         (handle_box): Ditto.
9136
9137 2008-08-15  Geoff Norton  <gnorton@novell.com>
9138
9139         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9140         debugging check.
9141
9142 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9145         calling generic methods.
9146
9147         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9148
9149         * aot-runtime.c (decode_patch_info): Ditto.
9150
9151         * mini.c (mono_resolve_patch_target): Ditto.
9152         
9153         * patch-info.h: Add METHOD_RGCTX.
9154
9155         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9156
9157 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9160         arguments in registers.
9161
9162         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9163         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9164
9165         * mini.c (mini_method_compile): Abort aot compilation for generic
9166         methods if generic sharing is disabled.
9167         
9168         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9169         an mrgctx.
9170
9171         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9172         requiring an mrgctx.
9173
9174         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9175         store instructions when converting a vcall to a normal call.
9176
9177         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9178         mono_arch_find_jit_info.
9179
9180 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9181
9182         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9183         avoid calling mono_method_full_name () for every method even if the
9184         env var is not set.
9185         (check_inline_caller_method_name_limit): Ditto.
9186
9187 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9188
9189         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9190         assemblies in one run.
9191
9192         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9193         skipped methods if it is not 0.
9194
9195         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9196
9197 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9198
9199         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9200           MONO_ARCH_HAVE_UNWIND_TABLE.
9201
9202         Contributed under MIT/X11 license.
9203
9204 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9205
9206         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9207           from default optimizaton list on Winx64.
9208
9209         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9210
9211         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9212           the LMF from the MonoJitTlsData structure.
9213
9214         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9215
9216         Contributed under MIT/X11 license.
9217
9218 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9219
9220         * mini.c (sigsegv_signal_handler): Fix the build.
9221
9222         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9223         assembly->aot_module.
9224
9225         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9226         hash table. This simplifies and speeds up a lot of code, and fixes support
9227         for .netmodules.
9228
9229         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9230         with the runtime.
9231
9232         * mini-exceptions.c: Ditto.
9233         
9234         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9235         'native_offset' argument, since these are computed in the 
9236         mono_find_jit_info () function.
9237
9238         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9239         is used by exceptions-ppc.c.
9240
9241         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9242         mono_arch_find_jit_info ().
9243         
9244         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9245         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9246         generic code in mini-exceptions.c.
9247
9248 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9251
9252         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9253         
9254         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9255         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9256         called while holding the loader lock. Fixes #415608.
9257         (mono_aot_get_method_from_token_inner): Ditto.
9258
9259 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9262         to reduce differences between this and the generic implementation in
9263         mini-exceptions.c.
9264         (ves_icall_get_frame_info): Ditto.
9265
9266         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9267
9268         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9269         longer neccesarry.
9270
9271         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9272         mono_arch_get_call_filter () and make it non-static, for consistency with the
9273         other architectures.
9274
9275 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9276
9277         * mini.c:
9278         * local-propagation.c:
9279         * mini-x86.c: Correct the name of arch defines.
9280
9281 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9284         NO_EMULATE_LONG_SHIFT_OPS define.
9285
9286 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9287
9288         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9289         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9290
9291         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9292         MACH fixes. Merged from the 2.0 branch.
9293
9294         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9295
9296         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9297         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9298
9299         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9300
9301         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9302         mono_marshal_get_native_wrapper () signature changes.
9303
9304 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9307         conversion bug under arm.
9308
9309 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9312
9313         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9314         with overflow checking.
9315
9316 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9317
9318         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9319         to the genmdesc.pl file
9320
9321 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9324         arg_array in the soft-float versions of the LOAD/STORE macros.
9325
9326         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9327         implementation.
9328
9329         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9330
9331 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9334         a float HFA. Fixes #413621.
9335
9336 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9337
9338         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9339         frame_size to args_size. Fixes build.
9340
9341 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9342
9343         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9344         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9345
9346         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9347         the stack are not unaligned. Fixes #413247.
9348         
9349 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9350
9351         * mini.c: update jitted methods performance counters.
9352
9353 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9354
9355         * mini-exceptions.c: increase the exceptions thrown performance
9356         counter in mono_handle_exception ().
9357
9358 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9359
9360         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9361         can work with netmodules.
9362
9363 2008-07-28  Geoff Norton  <gnorton@novell.com>
9364
9365         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9366         regression tests.
9367
9368 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9371         correct place.
9372
9373 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9374
9375         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9376           The float param registers and other param registers must be the 
9377           same index on Windows x64.
9378
9379         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9380           ArgValuetypeAddrInIReg argument case.  Setting the argument
9381           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9382
9383         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9384           variable computed above as the copy length for arguments of storage
9385           type ArgValuetypeAddrInIReg.
9386
9387         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9388           ArgValuetypeAddrInIReg argument case.  This case will rely on
9389           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9390
9391         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9392           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9393           jump and tail call instructoins as they do not follow the typical call behavior.
9394
9395         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9396           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9397           local variable and pass the local variable by reference to the called method.
9398
9399         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9400           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9401           of a struct is passed in a register it must be saved with the other
9402           volatile argument on the stack.
9403
9404         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9405           frame pointer the stack adjustment value must be saved to the unwind 
9406           info structure.
9407
9408         Contributed under MIT/X11 license.
9409
9410 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9413         which got lost in the merge.
9414
9415 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9416
9417         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9418         build.
9419
9420         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9421         
9422         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9423         icalls, since they won't be patched.
9424
9425         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9426         different code sequence when running under valgrind to prevent some valgrind
9427         errors.
9428
9429         * iltests.il.in: Add new regression test.
9430
9431         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9432         end with a throw.
9433
9434         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9435         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9436
9437         * iltests.il.in: Add new test.
9438
9439         * aot-compiler.c: Fix some warnings.
9440
9441         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9442         Fixes #412494.
9443
9444 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9447         (mini_usage_jitdeveloper): Add a missing --wapi option.
9448
9449 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9450
9451         * mini-codegen.c: Simplify the is_fp macros.
9452         (free_up_ireg): Remove, use free_up_reg instead.
9453         (free_up_reg): Fix the fp case.
9454
9455 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9456
9457         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9458         lowered earlier.
9459
9460         * exceptions-x86.c: Merge some changes which seemed to have got lost
9461         in the linear-ir merge.
9462
9463         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9464
9465         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9466         long vreg volatile even if the variable was already created.
9467
9468         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9469         volatile variables.
9470
9471 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9474
9475         * mini.c (mono_jit_compile_method_inner): Add support for 
9476         MONO_EXCEPTION_BAD_IMAGE.
9477
9478         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9479         mini_method_get_context () returns NULL. Fixes #356531.
9480
9481         * mini.c (mono_method_to_ir): Ditto.
9482         
9483         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9484         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9485
9486 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9487
9488         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9489         in the LDFTN implementation.
9490
9491 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9492
9493         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9494         code, patch calls to icalls, too, even if they're not in the
9495         shared generic code hash.  Fixes #411962.
9496
9497 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9498
9499         * cpu-x86.md: Increase the length of the fcall opcodes.
9500
9501         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9502         calls returning floats.
9503
9504         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9505         on NEWARR.
9506         
9507         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9508         missed earlier.
9509
9510         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9511         into the domain->method_code_hash.
9512
9513         * aot-compiler.c: Fix win32 build.
9514
9515         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9516         
9517         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9518         gshared NEWARR implementation.
9519
9520         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9521
9522         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9523         can be used outside of method_to_ir.
9524
9525         * mini.h (MonoCompile): Add arg_types field.
9526
9527         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9528         
9529         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9530         the values of the local arg_array and param_types array.
9531
9532 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9533
9534         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9535         got accesses might only get generated later when NEWOBJ is decomposed.
9536         
9537         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9538         looking up the native code of the target method when a delegate is called
9539         for the first time.
9540
9541         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9542         optimization.
9543
9544         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9545
9546         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9547         AOT work on platforms without a working dlsym implementation.
9548
9549         * mini.h: Bump AOT image format version.
9550         
9551 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9552
9553         * mini-exceptions.c: Free a MonoType with
9554         mono_metadata_free_type() instead of g_free().
9555
9556         * aot-runtime.c: Free a MonoType.
9557
9558 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9561         optimization.
9562
9563         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9564         fp stack on x86.
9565
9566 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9567         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9568         profiler hook.
9569
9570 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9573         NEWOBJ calls on valuetypes.
9574
9575         * iltests.il.in: Add new test.
9576
9577         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9578
9579 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9582         is no longer needed.
9583
9584         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9585         non register sized integer arguments.
9586         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9587         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9588         emit_memcpy2 ().
9589
9590         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9591         CEE_MONO_RETOBJ.
9592         
9593         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9594         two a binop with different sized arguments is emitted.
9595
9596         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9597         instruction in the ins==NULL case.
9598
9599 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9600
9601         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9602
9603         * mini-x86.c: Fix osx build.
9604
9605         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9606         opcodes as well.
9607
9608         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9609         instruction for non int sized variables.
9610
9611         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9612         implementation.
9613
9614 2008-07-23  Robert Jordan  <robertj@gmx.net>
9615
9616         * method-to-ir.c: Fix MSVC build.
9617
9618 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9619
9620         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9621         a non int sized type, widen it to an int since newer versions of gcc seem to
9622         generate code which needs this.
9623
9624         * ssa2.c abcremoval2.c: Fix warnings.
9625
9626         * *: Merge the Linear IR branch.
9627
9628         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9629         the ChangeLog file there describes all the changes done over the years. 
9630         Further documentation can be found at www.mono-project.com/Linear_IL.
9631
9632 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9633
9634         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9635           The float param registers and other param registers must be the 
9636           same index on Windows x64.
9637
9638         Contributed under MIT/X11 license.
9639
9640 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9641
9642         * mini.c: Make the previous fix GC safe.
9643
9644 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9645
9646         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9647
9648 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9649
9650         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9651           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9652           ArgValuetypeAddrInIReg instead.
9653
9654         Contributed under MIT/X11 license.
9655
9656 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9657
9658         * mini-codegen.c (get_register_spilling): Fix a warning.
9659
9660 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9661
9662         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9663         for types which the initialization fails. Raises the provided exception
9664         at the right stop after cleanup.
9665
9666 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * aot-compiler.c: Free most of the memory allocated during compilation.
9669
9670         * mini.c (mini_parse_debug_options): Fix a leak.
9671         
9672         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9673         during aot compilation.
9674
9675 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9678         it has too much register pressure.
9679
9680 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9683
9684 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9685
9686         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9687         on x86.
9688
9689         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9690         on amd64 similar to the way it is done on arm.
9691
9692         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9693
9694         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9695         consistency, normalize error messages, avoid loading aot-only modules in
9696         normal mode.
9697
9698         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9699         for consistency.
9700
9701         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9702
9703 2008-07-11  Martin Baulig  <martin@ximian.com>
9704
9705         * debug-debugger.h
9706         (MonoDebuggerInfo): Add `interruption_request'.
9707
9708 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * aot-compiler.c (emit_plt): Remove some dead code.
9711
9712         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9713
9714         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9715         return the plt info offset belonging to a given plt entry.
9716
9717         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9718         mono_aot_get_plt_info_offset.
9719         
9720         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9721         similar to the amd64 code by makeing jumps through a separate jump table 
9722         instead of embedding the jump addresses into the code.
9723
9724 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9725
9726         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9727         method.
9728
9729 2008-07-10  Martin Baulig  <martin@ximian.com>
9730
9731         * mini.c (mini_method_compile): Disable generics sharing when
9732         running in the debugger.
9733
9734 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9737
9738         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9739         the local register allocator from running out of registers on x86 when 
9740         using aot.
9741
9742 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9743
9744         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9745         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9746         C4146.
9747
9748         Contributed under MIT/X11 license.
9749
9750 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9753         speed up the assembler.
9754
9755 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9756
9757         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9758         support.
9759
9760         * mini.c: Move the soft float handling macros a bit earlier, add 
9761         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9762         place.
9763
9764         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9765
9766         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9767         read-only to help catch code allocation requests.
9768         
9769         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9770         and turn it off when using --aot-only or when compiling with --aot=full.
9771
9772         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9773         jump table for switches from the normal domain mempool, not the code
9774         manager.
9775
9776         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9777         unbox trampoline which handles aot-only mode too.
9778
9779         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9780         an AOTed unbox trampoline.
9781
9782         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9783
9784 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9785
9786         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9787         ""
9788
9789         Contributed under MIT/X11 license.
9790
9791 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9792
9793         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9794           the unwind information for the method at the end of the allocated block.
9795           
9796         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9797           MonoCompileArch to hold the unwind info for SEH on Winx64
9798         
9799         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9800           frame pointer info for the method being compiled.
9801           
9802         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9803           the call to mono_exception_from_token.
9804           
9805         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9806           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9807           information is stored a the end of the method block because it is all 32-bit offset based.
9808
9809         Contributed under MIT/X11 license.
9810
9811 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9814
9815         * wapihandles.c: Fix warnings.
9816
9817         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9818         mode.
9819
9820         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9821         mono_jit_compile_method in aot-only mode since that calls the type 
9822         initializer.
9823         
9824         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9825         get_delegate_invoke_impl in aot-only mode.
9826
9827         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9828
9829 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9832
9833         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9834         is on by default.
9835
9836         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9837
9838         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9839         init trampoline from the AOT file as well.
9840
9841         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9842         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9843         code.
9844
9845         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9846         mono_init.
9847
9848         * exceptions-amd64.c: Add _full variants for the remaining exception code
9849         creation functions as well, allow emission of relocatable code, remove
9850         caching since that is now done by the caller.
9851
9852         * mini-exceptions.c: Add _full variants for the remaining exception code
9853         creation functions as well, add aot-only support.
9854
9855         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9856         if we can determine a proper token for them.
9857         (add_wrappers): Add a few more wrappers.
9858         (emit_method_code): Remove some dead code.
9859         (emit_trampolines): Emit exception code too.
9860
9861         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9862
9863         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9864         mono_array_new_va which avoids varargs.
9865
9866         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9867
9868         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9869         mono_arch_create_specific_trampoline () in all places.
9870
9871         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9872         a bit so it can be used for other things as well.
9873         
9874         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9875         on demand as well.
9876
9877         * exceptions-amd64.c: Rename the caching from the exception code creation
9878         functions, it is done by the caller instead.
9879         
9880         * exceptions-amd64.c: Change the signature of the exception code creation 
9881         functions to allow the creation of relocatable code later.
9882
9883         * mini-exceptions.c: Add a set of functions to query the various 
9884         runtime-generated exception functions.
9885
9886         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9887         mono_arch_.. () functions.
9888         
9889 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9890
9891         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9892
9893         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9894
9895         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9896         (mini_get_vtable_trampoline): Ditto.
9897
9898         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9899         code in the AOT case by returning the code size and a list of relocations to
9900         the caller.
9901
9902         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9903
9904 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9905
9906         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9907           clean the stack.
9908
9909         Contributed under MIT/X11 license.
9910
9911 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9912
9913         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9914         so the buffer size can be computed correctly. Fixes #404735.
9915
9916         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9917         normally as cfg->debug_info is already freed.
9918
9919 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * mini-amd64.c: For calls returning vtypes in registers, don't store
9922         the return address on the stack, instead allocate a separate local for
9923         it. Fixes #404729.
9924
9925 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9926
9927         * mini-trampolines.c, mini.h: Add an argument to
9928         mono_create_jit_trampoline_in_domain() for turning off the adding
9929         of the sync wrapper.
9930
9931         * mini.c: Use the JIT trampoline without sync instead of
9932         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9933         be patched.
9934
9935 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9936
9937         * driver.c: Turn on GSHARED optimization by default.
9938
9939 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9940
9941         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9942         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9943
9944         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9945         create a variant of the generic trampoline code callable from AOTed trampolines.
9946
9947         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9948         trampoline code callable from AOTed trampolines.
9949
9950         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9951
9952 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9953
9954         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9955         pass-through manner.
9956
9957         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9958         and don't fail sharing for them anymore.
9959
9960         * mini-exceptions.c: Handle exceptions in shared generic methods.
9961
9962         * generic-sharing.c: When checking the context of a generic
9963         method, also check its class's context.  Don't treat wrappers as
9964         sharable.
9965
9966         * mini-trampolines.c: Some code factored out to
9967         metadata/generic-sharing.c.  Handle the MRGCTX case.
9968
9969         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9970         we must deal with the method being of another instantiation of the
9971         class.  Add static rgctx invoke wrappers to generic methods.
9972
9973 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9974
9975         * mini.c: Provide all jit infos of generic shared methods with a
9976         generic jit info.
9977
9978         * mini-exceptions.c: Handle the new situation that a generic info
9979         might be available, but not info about the this/vtable/mrgctx
9980         variable.
9981
9982 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9983
9984         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9985         generic methods.
9986
9987 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * dominators.c (check_dominance_frontier): Fix a warning.
9990
9991         * mini.h: Add some missing prototypes.
9992
9993         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9994
9995         * driver.c (mono_jit_init_version): Correct the comments since the first
9996         argument should be the name of the root domain, not a filename.
9997
9998         * aot-runtime.c (make_writable): Error out if this is called while running
9999         with --aot-only.
10000         (load_aot_module): Ditto.
10001
10002         * aot-compiler.c: Really fix the computation of method indexes.
10003
10004         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10005         optimizations as this is no longer called frequently.
10006
10007         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10008         method and the invoke impl code and pass it to the delegate trampoline instead of
10009         just the delegate class.
10010
10011 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * aot-compiler.c: Fixup the computation of method indexes.
10014         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10015         the method builder infrastructure.
10016
10017         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10018         has no header.
10019
10020         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10021         mode, load the method right away instead of creating a trampoline.
10022
10023         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10024
10025         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10026         some checks a bit.
10027
10028 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10031         (mono_aot_load_method): Use method_index instead of method->token.
10032
10033         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10034         can handle icalls etc. properly.
10035
10036         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10037
10038         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10039
10040         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10041         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10042         JIT_ICALL_ADDR patch type.
10043
10044         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10045
10046         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10047         request flag.
10048         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10049
10050         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10051
10052 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10055         domain->jit_code_hash.
10056
10057 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10058
10059         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10060
10061 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10062
10063         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10064         get_this_arg_from_call, let it compute it when needed.
10065
10066         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10067         gsctx from code only when needed.
10068
10069         * mini-trampolines.c (get_generic_context): Rename this to 
10070         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10071         it can be called by the arch backends.
10072
10073         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10074
10075 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10076
10077         * driver.c (mono_main): Add experimental --aot-only command line option.
10078
10079         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10080         set.
10081
10082 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10083
10084         * driver.c (DllMain): Remove mono_module_handle.
10085
10086         Contributed under MIT/X11 license.
10087
10088 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10091         for emitting methods which are not in the source assembly. Detect and report
10092         failure of assembling+linking.
10093         
10094         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10095
10096         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10097
10098 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10099
10100         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10101
10102 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10103
10104         * mini.h: Remove some obsolete prototypes.
10105
10106         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10107
10108 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10109
10110         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10111         supported by Visual Studio, so use alloca().
10112
10113 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10116         Fixes #402585.
10117
10118 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10119
10120         * mini.c: Fail sharing of a generic method if it contains an open
10121         catch clause (because we don't pass MRGCTXs yet).
10122
10123 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10124
10125         * mini.c: When compiling a method with generic sharing, insert the
10126         method instantiated with an all-Object generic context into the
10127         jit info table, instead of the context of the first instantiation
10128         of the method we happen to compile.
10129
10130 2008-06-18  Martin Baulig  <martin@ximian.com>
10131
10132         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10133         `major_version' and `minor_version'.
10134
10135 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10136
10137         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10138         mono_method_is_generic_sharable_impl() takes an additional
10139         argument specifying whether to treat type variables as reference
10140         types.
10141
10142 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10143
10144         * mini.h: Removed obsolete prototypes.
10145
10146 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10147
10148         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10149         already handle them.
10150
10151 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10152
10153         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10154         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10155         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10156         tramp-x86.c: Added a MonoGenericContext* argument to
10157         mono_arch_get_unbox_trampoline() so that it can call other
10158         functions which require it.
10159
10160 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10161
10162         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10163         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10164         mono_arch_get_this_arg_from_call() takes a
10165         MonoGenericSharingContext* as well.
10166
10167 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10168
10169         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10170         implement generic sharing of unbox.
10171
10172 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10173
10174         * mini.c: Don't compute the vtable to determine whether a field is
10175         special static, because it might not work for open types.
10176
10177 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10178
10179         * mini.c: Removed the unused token_type and token_source arguments
10180         from get_runtime_generic_context_ptr().
10181
10182 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10183
10184         * mini.c (ADD_BINOP): fix the build
10185
10186 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10187
10188         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10189         a widening op.
10190
10191 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10192
10193         * mini.h: Removed class relations enum that's not used anymore.
10194
10195 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10196
10197         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10198
10199         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10200         the lazy fetch trampoline access code.
10201
10202 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10203
10204         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10205
10206 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10207
10208         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10209
10210         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10211
10212         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10213
10214 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10217         intrinsics.
10218
10219         * mini-ops.h: Add MIN/MAX_UN opcodes.
10220
10221         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10222         intrinsics.
10223
10224         * basic-math.cs: Add more min/max tests.
10225
10226         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10227
10228 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10229
10230         * mini.c: Small fix in the prologue of emit_castclass.
10231
10232 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10235
10236         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10237         do not work even for unsigned types. Fixes #400014.
10238
10239         * basic-math.cs: Add regression tests for unsigned Min/Max.
10240
10241 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10242
10243         * mini.c: Added additional context_used argument to several
10244         functions, which will be needed for sharing generic methods.  Use
10245         GET_RGCTX macro wherever appropriate.  Declare only one
10246         context_used in mono_method_to_ir().
10247
10248 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10249
10250         * mini.c, generic-sharing.c: Removed generic class relations.
10251
10252         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10253         functions due to MRGCTX changes.
10254
10255 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10256
10257         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10258         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10259         with calculated IMT.
10260
10261         * mini.c: Generic sharing of calls via generic interfaces.
10262
10263         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10264         generic method with non-constant MonoGenericContext*.  Instead,
10265         the context is taken out of the method itself.
10266
10267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10268
10269         * mini.c: Generic sharing of ldvirtftn.
10270
10271 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10272
10273         * mini.c: Generic sharing of ldftn.
10274
10275 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10276
10277         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10278
10279 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10280
10281         * mini.c: Generic sharing of the special case of ldtoken followed
10282         by a call to GetTypeFromHandle.
10283
10284 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10285
10286         * mini.c: Generic sharing of box for nullable types.
10287
10288 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10289
10290         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10291         are passed on the stack. Fixes #324807.
10292
10293 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10294
10295         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10296         for the ArgValuetypeAddrInIReg case.
10297
10298         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10299         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10300
10301         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10302         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10303         local variable and pass the local variable by reference to the called method.
10304           
10305         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10306         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10307
10308         Contributed under MIT/X11 license.
10309
10310 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10311
10312         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10313
10314         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10315         everything.
10316
10317 2008-06-10  Martin Baulig  <martin@ximian.com>
10318
10319         * debug-mini.c
10320         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10321
10322 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10323
10324         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10325         possible error when no arguments are passed.
10326
10327         Contributed under MIT/X11 license.
10328
10329 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10330
10331         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10332         where the file name is NULL.
10333
10334 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10335
10336         * mini.c: Fix s390 build.
10337
10338 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10339
10340         * trace.c (mono_trace_parse_options): Fix warnings.
10341
10342         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10343
10344 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * mini.c (remove_block_if_useless): Avoid printing the method name.
10347         
10348         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10349         MONO_INST_NEW.
10350
10351         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10352         LMF. Not yet used.
10353
10354         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10355         translated code after it has been patched.
10356
10357 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10358
10359         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10360         avoid problems during code patching on SMP systems.
10361         (emit_call): Avoid adding a patch info which is already added by 
10362         emit_call_body.
10363         (mono_arch_emit_exceptions): Ditto.
10364
10365 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10368         MONO_TYPE_ISSTRUCT already checks for it.
10369
10370 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10371
10372         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10373           structs with floats on Winx64 the float registers are not used.  
10374           The integer registers are always used..
10375         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10376           only one register will be used and only if the size of the struct 
10377           is 1,2,4, or 8 bytes.
10378
10379         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10380           to work for Winx64.
10381
10382         Contributed under MIT/X11 license.
10383
10384 2008-06-05  Martin Baulig  <martin@ximian.com>
10385
10386         * debug-debugger.c (debugger_lookup_class): Also call
10387         mono_class_setup_methods() here; we're only called from RTI.
10388
10389 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10390
10391         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10392         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10393         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10394         Post-process object files and add dtrace-generated object, if necessary.
10395
10396         Contributed under MIT/X11 license.
10397
10398 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10399
10400         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10401         element class.
10402
10403         * mini.c: Generic sharing for unbox.any and castclass.
10404
10405 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10406
10407         * mini.c: Ignore tailcall prefix in shared generic code and when
10408         doing calls which require a vtable/rgctx argument.
10409
10410 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10411
10412         * mini.c: Don't free the JIT info.
10413
10414         * driver.c: Changes in the JIT info table testing code.
10415
10416 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10419         interruption. Fix some warnings.
10420
10421         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10422         interruption_checkpoint.
10423
10424 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10425
10426         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10427         from embedding applications.
10428
10429 2008-06-02  William Holmes  <billholmes54@gmail.com>
10430
10431         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10432           reserving 32 bytes on the stack when making calls. 
10433
10434         Contributed under MIT/X11 license.
10435
10436 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10439         the linear IL branch.
10440
10441         * driver.c: Print out more information for --version on arm.
10442
10443 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10446         bb_exit instead, since out of line bblocks might not actually be emitted
10447         out-of-line.
10448         
10449         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10450         maximum epilog size for out of line bblocks if tracing is enabled.
10451
10452         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10453
10454 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10455
10456         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10457
10458 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10461         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10462         opcodes.
10463
10464 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10467         the 'value' to store is a constant.
10468
10469         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10470
10471         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10472         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10473
10474 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10475
10476         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10477         for accessing method->generic_container.
10478
10479 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10482         
10483         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10484
10485         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10486
10487         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10488         fails.
10489
10490 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10491
10492         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10493
10494         * mini.c: Handle the case when mono_class_vtable () fails.
10495
10496 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10497         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10498         the stat profiler.
10499
10500 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10501
10502         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10503         together with domain sharing.
10504
10505 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10506
10507         * mini.c: Treat callvirts to final methods like non-virtual calls
10508         when doing generic sharing, i.e. look them up in the runtime
10509         generic context.
10510
10511 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10512
10513         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10514         with computed types (for generic sharing).
10515
10516         * mini.c: Generic sharing for mkrefany and refanyval.
10517
10518 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10519
10520         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10521         possible.
10522
10523         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10524         the generic sharing code.
10525         
10526         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10527         when needed.
10528
10529 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10530
10531         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10532
10533 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10534
10535         * driver.c: updated copyright date
10536
10537 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10538
10539         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10540         needed.
10541
10542 2008-05-19  Martin Baulig  <martin@ximian.com>
10543
10544         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10545         pointing to the new `_mono_debug_using_mono_debugger' variable.
10546
10547         * driver.c
10548         (mono_main): Check mono_debug_using_mono_debugger() rather than
10549         the `MONO_INSIDE_MDB' environment variable to check whether we're
10550         inside the debugger.
10551
10552 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10555         argument.
10556
10557 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10558
10559         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10560
10561         * mini.c: Added mini_assembly_can_skip_verification. This
10562         function checks if the assembly requested to skip verification. 
10563         Fixes part of #387274.
10564
10565 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * mini.c (mini_get_method): Disable the check for open generic classes when
10568         using generic sharing.
10569
10570         * generics.cs: Add a test for #387034.
10571
10572         * mini.c (mini_get_method): Check whenever the method class is an open generic
10573         type, and return NULL in that case, causing a verification error. Fixes
10574         #384123.
10575
10576 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10577
10578         * driver.c (mono_main): Revert r102623. The right
10579         thing to do is to enable the verifier under verifiable
10580         unless a --security flag was passed.
10581
10582         We need this non-trivial behavior for --verify-all otherwise
10583         mcs-compileall won't be able to use it. As it needs everything to
10584         be verified under validil.
10585
10586 2008-05-06  Martin Baulig  <martin@ximian.com>
10587
10588         Fix #383749.
10589
10590         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10591         (mono_debugger_thread_cleanup): Likewise.
10592         (mono_debugger_extended_notification): Likewise.
10593
10594 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10595
10596         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10597         against both inflated and non-inflated methods. We need to check against the
10598         generic definition for cases where the instantiated method is not visible.
10599         We need to check against the inflated types for cases where the instantiation
10600         changes any super type. This fixes #382986.
10601
10602         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10603         that check for visibiliy as generic params only appears as the type subject
10604         of tokens on call opcodes. Field manipulation and ldftn must always
10605         target an exact type.
10606
10607 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10608
10609         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10610         if no related --security flag is passed.
10611
10612 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10613
10614         * mini-arch.h: Prepare support for ppc64.
10615
10616         Contributed under MIT/X11 license.
10617
10618 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10619
10620         * aot-runtime.c: Prepare support for ppc64.
10621
10622         Contributed under MIT/X11 license.
10623
10624 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10625
10626         * mini-ops.h: Prepare support for ppc64.
10627
10628         Contributed under MIT/X11 license.
10629
10630 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10631
10632         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10633
10634         Contributed under MIT/X11 license.
10635
10636 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10637
10638         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10639         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10640         assemblies on windows.
10641
10642 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10643
10644         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10645         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10646         * main.c: Use UTF-8 encoded command line instead of Windows default code
10647         page on Windows to support Unicode.
10648         * driver.c (DllMain): New function for mixed-mode assembly support.
10649         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10650         export __stdcall functions without decoration.
10651
10652         Contributed under MIT/X11 license.
10653
10654 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10655
10656         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10657         saving it very early.
10658
10659 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10660
10661         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10662         deleted.  The only way to access the new RGCTX is via the
10663         trampline.
10664
10665         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10666         vtable instead of the RGCTX to static methods.
10667
10668         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10669         accessing the new RGCTX.
10670
10671         * generic-sharing.c: There is no separation between self, type
10672         arguments and other types in the RGCTX anymore.
10673
10674 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10675
10676         * mini-amd64.c (add_general): Remove previous stack adjustment.
10677         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10678         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10679         for 32 bytes of stack space reserved for all calls.
10680         
10681         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10682         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10683         adjustment.
10684         
10685         Code contributed under MIT/X11 license.
10686
10687 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10688
10689         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10690         against the root definition, peeling out method and type instantiations.
10691         Cache verify success results, code that fails verification is still
10692         checked multiple times.
10693
10694 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10695
10696         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10697
10698 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10699
10700         * mini-amd64.c (add_general): Always increment stack on Win64.
10701         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10702         on Win64.
10703         
10704         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10705         stack based argument handling on Win64.
10706         
10707         Code contributed under MIT/X11 license.
10708
10709 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10710
10711         * Makefile.am (version.h): Add support for git-svn.
10712
10713 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10716         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10717         avoiding allocations and libc functions which might deadlock.
10718         
10719         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10720         'no-gdb-backtrace' option is set.
10721
10722         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10723
10724         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10725
10726 2008-04-21  Martin Baulig  <martin@ximian.com>
10727
10728         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10729         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10730
10731 2008-04-21  Martin Baulig  <martin@ximian.com>
10732
10733         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10734         `thread_vtable', `event_handler_ptr' and `event_handler'.
10735
10736 2008-04-21  Martin Baulig  <martin@ximian.com>
10737
10738         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10739         allows delayed initialization of the `executable_code_buffer' when
10740         attaching.
10741
10742 2008-04-21  Martin Baulig  <martin@ximian.com>
10743
10744         * mini.h (mono_debugger_create_notification_function): Removed.
10745         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10746
10747         * mdb-debug-info64.s
10748         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10749
10750         * mdb-debug-info32.s
10751         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10752
10753         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10754         currently only works on x86 and x86_64, so don't create it on ppc.
10755
10756 2008-04-21  Martin Baulig  <martin@ximian.com>
10757
10758         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10759
10760         * mini.c
10761         (mini_method_compile): In the fp elimination check, check
10762         `debug_options.mdb_optimizations' in addition to
10763         mono_debug_using_mono_debugger().       
10764
10765         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10766         disable some JIT optimizations which are only disabled when
10767         running inside the debugger.
10768         Added `--help-debug' option to describe the debugging options.
10769         (parse_debug_options): New static function to parse the `--debug'
10770         options, so we can easily add more stuff in future.
10771
10772 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10773
10774         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10775         the method has no body.
10776
10777 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10778
10779         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10780         assembly is not allowed in MSVC 64-bit compiler. 
10781         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10782         as we get floating point exceptions everywhere.
10783         
10784         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10785         correctly align arguments for call to throw_exception.
10786         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10787         
10788         Code contributed under MIT/X11 license.
10789
10790 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10793
10794 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10795
10796         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10797
10798         * mini-amd64.c (NEW_INS): Set cil_code.
10799
10800         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10801         from mini-amd64.c so all debugger related logic is in one place.
10802
10803         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10804         later won't have a random ip assigned to them.
10805
10806 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10809         the arch specific function initializes code_size.
10810         (mono_create_delegate_trampoline): Ditto.
10811
10812         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10813         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10814         platforms.
10815
10816         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10817         running under the debugger.
10818
10819         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10820         debugger.
10821
10822         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10823         debugger. Also move the disabling of optimizations here from driver.c.
10824         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10825         debugger.
10826
10827         * mini.h (MonoCompile): Add a few new flags.
10828
10829 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10832         so the cil_code field of created MonoInst's is properly set.
10833         (mini_select_instructions): Ditto.
10834
10835         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10836         (MONO_INST_NEW_CALL): Ditto.
10837
10838         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10839         in many places so the ins->cil_code field is properly initialized.
10840
10841         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10842         place.
10843
10844 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * mini.c (mini_method_compile): Print a different message when compiling a 
10847         shared method.
10848         
10849         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10850         > 1.
10851
10852 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10853
10854         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10855         SSE2 instructions.
10856
10857         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10858         
10859 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10860
10861         * mini.c (handle_stack_args): Make this return void since its return value was
10862         never used. Also set cfg->unverifiable for invalid IL instead of calling
10863         G_BREAKPOINT ().
10864
10865 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10866
10867         * mini.c: Make sure "this" is live in catch clauses with type
10868         variables in shared generic code.
10869
10870 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10871
10872         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10873         generic_class_is_reference_type() to ensure the proper behaviour
10874         when sharing generic code and the type in question is a type
10875         argument.
10876
10877 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10878
10879         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10880         race conditions when printing thread dumps. Fixes #377738.
10881
10882 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10883         
10884         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10885         shows up when both MonoInst arguments can cause aliasig.
10886         There is likely no way in the current JIT to trigger this problem, but
10887         it showed up in the development of generics sharing, when in a new
10888         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10889         When the generics sharing code will be committed, its tests will be
10890         valid also for this bug.
10891
10892 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10895         PATCH_INFO_METHOD.
10896
10897         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10898         NULL.
10899
10900 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10901
10902         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10903         use a more detailed exception message for InvalidCastException.
10904
10905         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10906
10907         * driver.c (mono_main): Add --debug=casts option to turn on better 
10908         InvalidCastException message details.
10909
10910         * mini.c (mini_get_debug_options): New helper function to return the address of
10911         the debug_options variable.
10912
10913         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10914         the jit_tls TLS variable.
10915
10916         * mini.c (mono_jit_tls): New TLS variable.
10917
10918         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10919         option is used.
10920
10921 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10922
10923         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10924
10925         * mini.c: Removed verifer related stuff, code moved to verify.c.
10926
10927         * driver.c: Using code from verify.c instead of mini.c.
10928
10929 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10932         longer valid.
10933
10934 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10935
10936         * mini.c (check_for_method_verify): Enabling verification of
10937         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10938         have been fixed.
10939
10940 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10941
10942         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10943         caller saved registers as well.
10944         
10945         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10946         saved registers as well.
10947
10948 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10951
10952         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10953         code.
10954
10955 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10956
10957         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10958         to get_call_info.
10959         (get_call_info): Take a gsctx argument instead of 'cfg'.
10960
10961 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10964         mono_verify_all is set.
10965
10966         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10967
10968         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10969
10970 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10971
10972         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10973         an exception.
10974
10975         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10976         verifier and the code generated by the compiler.
10977
10978 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10979
10980         * mini.c: Generic sharing of the non-nullable case of the box
10981         instruction.
10982
10983 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * inssel.brg: Fix the build.
10986
10987         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10988
10989 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10990
10991         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10992         Array:Address. Fixes #372410.
10993
10994         * iltests.il.in: New tests for readonly prefix.
10995
10996 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10997
10998         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10999         mini-trampolines.c.
11000
11001         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11002         mini-exceptions.c.
11003
11004         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11005         
11006         * mini.c (mono_decompose_op_imm): New helper function.
11007
11008         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11009         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11010         return value.
11011
11012         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11013         mono_arch_output_basic_block. Fix warnings.
11014
11015         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11016         for now.
11017
11018 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11021         since the extra frame is now detected automatically inside the loop.
11022
11023         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11024         opts which are now in mono_peephole_ins ().
11025         
11026         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11027
11028         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11029         frames and skip duplicate managed-to-native frames. Fixes #367665.
11030
11031         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11032         opts which are now in mono_peephole_ins ().
11033         (mono_arch_peephole_pass_2): Ditto.
11034
11035         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11036
11037         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11038         arch independent peephole optimizations.
11039
11040         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11041         opts which are now in mono_peephole_ins ().
11042
11043         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11044         
11045         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11046
11047         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11048         pattern.
11049
11050         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11051         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11052         opcode. 
11053
11054 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11057         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11058         return value.
11059
11060         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11061         mono_arch_output_basic_block. Fix warnings.
11062
11063 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11066         conv.ovf.u.un.
11067
11068 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11069
11070         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11071         conv.ovf.u.un.
11072
11073         * iltests.il: Add new tests.
11074
11075 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11076
11077         * mini.c: Removed Windows version macros.
11078
11079 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11080
11081         * generic-sharing.c: Put reflection types in the extensible part
11082         of the runtime generic context.
11083
11084         * mini.c: Generic sharing of the GetTypeHandle special case of the
11085         ldtoken instruction.
11086
11087 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11090
11091         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11092         
11093         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11094         consistency with the other version on the linear IR branch.
11095
11096         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11097
11098         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11099
11100         * iltests.il.in: Add new tests.
11101
11102 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11103
11104         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11105
11106         * iltests.il.in: Add new tests.
11107
11108 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11109
11110         * mini.c: Two variables with the same name were declared in
11111         nesting contexts and one wasn't initialized.  Fixed.
11112
11113 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11114
11115         * mini.c: Generic sharing of the initobj instruction.
11116
11117 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11118
11119         * mini.c: make the test to optimize ldtoken from typeof() more
11120         precise.
11121
11122 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11123
11124         * mini.c: Generic sharing of the initobj instruction for reference
11125         types.
11126
11127 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11128
11129         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11130         the mono_breakpoint_clean_code() code to perform bound checks.
11131
11132 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11133
11134         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11135         mono_arch_patch_callsite() to include the start of the managed method
11136         to be able to perform bound checks.
11137
11138 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11139
11140         * mini.c: Generic sharing for the isinst instruction.
11141
11142 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11143
11144         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11145         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11146         with the runtime generic context argument.
11147
11148         * mini.c: Share calls to several types of unsharable methods by
11149         putting the address of the method code in the runtime generic
11150         context and doing an indirect call.
11151
11152         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11153         to switches.
11154
11155 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11156
11157         * generic-sharing.c: Change due to a change in the runtime genric
11158         context API.
11159
11160 2008-03-15  Martin Baulig  <martin@ximian.com>
11161
11162         * tramp-x86.c
11163         (mono_arch_nullify_class_init_trampoline): Add call to
11164         mono_breakpoint_clean_code() to make things work when running
11165         inside the debugger.
11166
11167         * tramp-amd64.c
11168         (mono_arch_nullify_class_init_trampoline): Add call to
11169         mono_breakpoint_clean_code() to make things work when running
11170         inside the debugger.
11171
11172 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * inssel-long.brg (reg): Fix 64 bit build.
11175
11176 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11177
11178         * mini.c, mini.h: Share static generic code by passing it an
11179         implicit argument pointing to the runtime generic context.
11180
11181         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11182         inssel-long32-mips.brg: New opcodes for calling shared static,
11183         which need to be passed the runtime generic context.
11184
11185         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11186         argument on the stack in the prologue if needed.  New function for
11187         finding the runtime generic context argument from the registers
11188         saved by the trampoline.
11189
11190         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11191         runtime generic context argument.
11192
11193         * tramp-amd64.c: Also restore the register used for the runtime
11194         generic context argument.
11195
11196         * mini-trampoline.c: Resolve shared static calls by consulting the
11197         runtime generic context via the new argument.
11198
11199         * generic-sharing.c: Add an argument to sharability-checking
11200         functions that specifies whether type variables should be treated
11201         as sharable type arguments.
11202
11203         * inssel-x86.brg: Removed a superfluous, buggy rule.
11204
11205         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11206         to switches.
11207
11208 2008-03-14  Martin Baulig  <martin@ximian.com>
11209
11210         * debug-debugger.c (main_thread_handler): Call
11211         mono_runtime_run_main() without sending any notifications.
11212
11213         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11214
11215 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11216
11217         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11218
11219 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11220
11221         * tramp-x86.c: Fixed register restore offsets in the trampoline
11222         code for ECX and EDX.
11223
11224 2008-03-12  Geoff Norton  <gnorton@novell.com>
11225
11226         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11227         different ucontext_t implementations.
11228         * exceptions-arm.c: Use the above defines to get exceptions working on 
11229         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11230         * mini-arm.c: Implement iPhone icache support (based on a patch by
11231         Luke Howard lukeh@padl.com)
11232
11233 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11234
11235         * mini.c: Enable generic sharing of calls to non-static
11236         non-interface non-generic non-value-type methods.
11237
11238         * mini-trampolines.c: Resolve calls from shared generic code.
11239
11240 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11243
11244         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11245
11246 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11247
11248         * mini.c: some fixes for the AOT compiler.
11249
11250 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11251
11252         * cpu-amd64.md: Add clob:1 to some float opcodes.
11253
11254 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11255
11256         * mini.h: Added MiniVerifierMode enumeration.
11257
11258         * mini.c: Added mini_verifier_set_mode to control
11259         the usage of the new verifier.
11260
11261         * mini.c (mono_method): Integrated the new verifier.
11262
11263         * driver.c: Extended --security option with validil and
11264         verifiable options to activate the new verifier.
11265
11266 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11267
11268         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11269         optimization to ctors taking 0 or 2 arguments too.
11270
11271         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11272         a bit.
11273
11274         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11275
11276         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11277
11278 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11279
11280         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11281         non-aot case as well.
11282
11283         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11284
11285         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11286         changes.
11287
11288         * aot-compiler.c (encode_patch): Ditto.
11289
11290         * mini.h (G_MININT32): Fix the definition of this.
11291
11292 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11295
11296         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11297
11298 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11301         methods returning vtypes in registers.
11302         (mono_arch_allocate_vars): Ditto.
11303
11304         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11305
11306         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11307
11308         * generics.cs: Add a test from the linear IR branch.
11309
11310         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11311
11312         * mini.c (inline_method): Cache failed inline attempts.
11313
11314 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11315
11316         * mini.c: For shared methods of generic classes put the location
11317         of "this" into the MonoGenericJitInfo.
11318
11319         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11320         register out of a MonoContext by register number.  Add the generic
11321         sharing context as an argument to mono_arch_find_this_argument().
11322
11323         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11324         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11325         for new arch function.
11326
11327         * mini-exception.c: Handle open exception clauses in shared
11328         generic code.
11329
11330         * mini-trampolines.c: Supply additional argument to
11331         mono_arch_find_this_argument().
11332
11333 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * Makefile.am (regtests): Run the bench.exe tests last.
11336
11337 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11338
11339         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11340         a bit.
11341
11342 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11343
11344         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11345         with MS.
11346
11347         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11348         
11349         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11350
11351         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11352         whose class has no cctor.
11353
11354         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11355
11356 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11357
11358         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11359         unverified.
11360
11361 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11364         to be in sync with the code on the linear IR branch.
11365
11366         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11367
11368         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11369
11370 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11371
11372         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11373
11374         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11375
11376         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11377
11378         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11379
11380         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11381         
11382         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11383         body.
11384
11385 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11386
11387         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11388         OP_LOADR4_MEMBASE emission.
11389
11390         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11391         (mono_spillvar_offset_float): Ditto.
11392
11393         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11394
11395         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11396         emission.
11397
11398         * basic-long.cs: Add regression tests for them.
11399
11400         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11401         use.
11402         (mono_arch_allocate_vars): Fix representation of single-precision float
11403         argument.
11404         (mono_arch_output_basic_block): Ditto.
11405
11406         * inssel-mips.brg: Ditto, remove duplicate items.
11407
11408         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11409         arguments of tail calls as on other platforms.
11410         (mono_arch_output_basic_block): Handle tail calls.
11411
11412         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11413         register.
11414
11415         * objects.cs (test_5_pass_static_struct): Add test for it.
11416
11417         Contributed under MIT/X11 license.
11418
11419 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11420
11421         * Makefile.am: Use gmcs for compiling the regression tests.
11422
11423         * *.2.cs *.2.il: Rename to *.cs and *.il.
11424
11425 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * regalloc.h: Make the vassign array smaller.
11428
11429         * mini.c (mini_method_compile): Remove an unused field in cfg.
11430
11431         * mini-codegen.c: Add a bunch of micro optimizations.
11432
11433 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11434
11435         * regalloc.h: Remove some unused fields.
11436
11437 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11440
11441         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11442
11443 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11444
11445         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11446
11447         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11448         trampoline: Fetch an entry from the runtime generic context.  If
11449         it's NULL, jump to the actual trampoline to fill the runtime
11450         generic context.  Otherwise, return it.
11451
11452         * mini.c: Call the lazy fetch trampoline to get entries out of the
11453         runtime generic context.
11454
11455         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11456         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11457         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11458
11459 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11460
11461         * mini.c: Fetch data out of the extensible part of the runtime
11462         generic context instead of calling a helper function.
11463
11464         * generic-sharing.c: Some functions moved into
11465         metadata/generic-sharing.c.  Helper function for fetching other
11466         types now checks and asserts against extensible rgctx (just for
11467         debugging purposes - the helper function isn't called anymore
11468         unless for debugging).
11469
11470 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11473         for tail calls up to the point that the tests in iltests.exe run. Also add a
11474         dummy CKFINITE implementation.
11475         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11476         needed for trampoline LMF frames.
11477
11478         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11479         trampoline LMF frames.
11480
11481 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11482
11483         * mini.c (inline_method): clean any pending loader error when inlining fail.
11484         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11485
11486 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11489
11490         * aot-runtime.c (decode_patch_info): Ditto.
11491
11492         * mini.c (mono_resolve_patch_target): Ditto.
11493         
11494         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11495         icall wrappers.
11496
11497         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11498         
11499         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11500         if it references an icall address.
11501
11502 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11503
11504         * cpu-s390x.md: Remove some more unused opcodes.
11505         
11506         * cpu-s390x.md: Remove some unused opcodes.
11507
11508         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11509         mono_op_imm_to_op ().
11510
11511         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11512         instead of a switch statement.
11513         
11514         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11515         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11516
11517         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11518         
11519         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11520
11521         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11522         -1.
11523
11524 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11527         opened. Fixes #362607.
11528
11529         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11530
11531         * iltests.il.in: Add a test for static methods in interfaces.
11532
11533 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11534
11535         * genmdesc.c (build_table): Fix a crash on older glib versions.
11536
11537         * cpu-sparc.md: Remove some unused opcodes.
11538         
11539         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11540         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11541
11542         * cpu-amd64.md: Remove some unused opcodes.
11543
11544         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11545         like the other opcodes.
11546
11547 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11548
11549         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11550
11551         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11552
11553         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11554         variables 'cfg' instead of 'm' for consistency.
11555
11556         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11557
11558         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11559         argument holding the vtype return address, to avoid the ambigious use of
11560         cfg->ret for this purpose.
11561
11562         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11563
11564         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11565         
11566         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11567         new mono_print_ins () function which only takes one argument.
11568
11569 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11570
11571         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11572         macro arguments.
11573
11574 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11575
11576         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11577
11578         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11579
11580         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11581         opcodes and other small changes.
11582
11583         * mini-ops.h: Add some new opcodes from the linear IR branch.
11584
11585         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11586
11587         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11588         opcodes, use the REG_MEMBASE opcodes instead.
11589         
11590         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11591         opcodes, use the REG_MEMBASE opcodes instead.
11592         
11593         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11594         linear IR branch.
11595
11596         * mini.c (mono_op_imm_to_op): New helper function.
11597
11598         * mini-ops.h: Add some opcodes from linear IR branch.
11599
11600 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11601
11602         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11603         <tsv@solvo.ru>.
11604
11605 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11608         OP_ICONV_TO_R4/R8.
11609
11610         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11611
11612 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11613
11614         * aot-compiler.c (emit_method_code): Add an assert.
11615
11616         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11617         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11618         methods.
11619
11620 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11623         some load/store opcodes so they are consistent. 
11624         (mono_arch_emit_prolog): Simplify some code.
11625
11626         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11627
11628         * objects.cs: Add tests for large argument offsets on ARM.
11629
11630         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11631         stack offsets. Fixes #359651.
11632
11633         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11634
11635         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11636
11637         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11638
11639         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11640
11641         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11642
11643         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11644         rid of CEE_CONV_R_UN.
11645
11646         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11647
11648 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11649
11650         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11651
11652         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11653
11654         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11655
11656         * cpu-amd64.md: Remove some unused opcodes.
11657
11658         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11659
11660         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11661
11662         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11663         arch specific functions for its parts. Call the peephole pass after local
11664         regalloc so the prolog can compute a more accurate max_offset.
11665         
11666         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11667         the corresponding OP_I/OP_L opcodes.
11668
11669         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11670
11671         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11672
11673 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11674
11675         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11676         as they are handled in mini.c.
11677
11678         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11679         
11680         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11681         case since it is handled in mini.c.
11682
11683         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11684
11685         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11686
11687         * *.c: Use the new opcodes in the IR and back end code.
11688
11689         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11690
11691         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11692
11693 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11694
11695         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11696         an assert because it has a race condition.
11697
11698 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11699
11700         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11701
11702         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11703
11704         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11705
11706         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11707         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11708
11709 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * cpu-amd64.md (move): Correct the maximum size of move.
11712
11713 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11714
11715         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11716         the generic class init trampoline to return quickly if the class
11717         is already inited.
11718
11719 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11722         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11723
11724 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11725
11726         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11727         branch.
11728
11729 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * objects.cs: Add some soft-float tests.
11732
11733         * mini.c: Fix a couple more soft-float issues.
11734
11735         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11736
11737         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11738         avoid a REX prefix.
11739
11740 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11741
11742         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11743         exception happens while compiling a virtual method.
11744
11745 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11746
11747         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11748         
11749         * mini-sparc.c: Fix build.
11750
11751         * mini-sparc.c (get_call_info): Add support for generic sharing.
11752
11753         * mini-exceptions.c: Add a FIXME.
11754
11755 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11758         altstack handling code.
11759
11760         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11761         
11762         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11763
11764         * mini-s390.c: Add support for generic sharing.
11765
11766         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11767         Fix CAS on s390.
11768         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11769
11770         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11771
11772         * mini-s390x.c: Add support for generic sharing.
11773         
11774         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11775         Fix CAS on ia64.
11776         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11777
11778         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11779         can be used since it takes a 16 bit signed immediate.
11780
11781         * inssel-s390x.brg: Fix OP_SETRET.
11782
11783         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11784
11785         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11786
11787         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11788
11789         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11790
11791         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11792         in one place.
11793
11794         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11795         stuff.
11796
11797         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11798         of the unused mono_arch_patch_delegate_trampoline stuff.
11799
11800 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11801
11802         * basic-long.cs: Move the fp related tests to basic-float.cs.
11803
11804         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11805
11806         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11807
11808         * basic-calls.cs: Add a test for proper float argument passing.
11809
11810         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11811         if the context corresponds to an exception received through a signal.
11812
11813         * exceptions.cs: Add a test for nullref handling at the start of a try
11814         clause.
11815
11816         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11817
11818         * jit-icalls.c (mono_break): New JIT icall.
11819
11820         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11821
11822         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11823
11824 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * cpu-*.md: Get rid of unused opcodes.
11827
11828         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11829
11830         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11831         by all platforms.
11832
11833         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11834         define.
11835
11836         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11837         the arch independent trampoline code in mini-trampolines.c.
11838
11839         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11840
11841         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11842
11843         * mini-s390.h: Remove an unused define.
11844         
11845         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11846         the arch independent trampoline code in mini-trampolines.c.
11847
11848         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11849
11850 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11853
11854         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11855
11856         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11857
11858         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11859
11860         * cpu-amd64.md: Use smaller sizes for int opcodes.
11861
11862         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11863
11864         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11865         objects.cs.
11866
11867         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11868         debugging.
11869
11870         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11871         instead of though a pointer to save an indirection when accessing elements of
11872         the array.
11873
11874         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11875         some typos.
11876         (NOT_IMPLEMENTED): New helper macro.
11877         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11878         of a bb.
11879
11880         * *.c: Use the new helper macro.
11881
11882 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11885
11886 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11889         stack slots.
11890
11891 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11894         profiling is enabled.
11895         
11896         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11897         the end.
11898         (mono_arch_emit_prolog): Add more first bblock optimizations.
11899
11900         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11901         in order if possible.
11902         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11903         bblock, since the arguments are still in their original registers.
11904
11905         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11906
11907 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11908
11909         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11910         as well.
11911
11912         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11913         offset 0.
11914
11915         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11916
11917         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11918         process async exceptions received while in unmanaged code.
11919
11920         * mini.c (mini_init): Install a callback with the runtime which will be called
11921         when a thread receives an async exception while in unmanaged code.
11922
11923         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11924
11925         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11926
11927 2008-01-16  Wade Berrier  <wberrier@novell.com>
11928
11929         * cpu-g4.md:
11930         * cpu-arm.md:
11931         * cpu-s390x.md:
11932         fix build
11933
11934 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11935
11936         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11937         compilation with sun cc.
11938
11939         * cpu-*.md: Fix the build.
11940
11941         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11942
11943         * mini-amd64.h: Add some comments to the MonoLMF structure.
11944
11945         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11946         
11947         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11948         in the LMF structure if possible. This saves two instructions in the
11949         managed->native wrappers.
11950
11951         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11952
11953 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11954
11955         * generic-sharing.c: New type argument lookup code which uses the
11956         runtime generic context template.
11957
11958 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11961
11962         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11963         (mono_arch_output_basic_block): Fix localloc implementation.
11964
11965         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11966
11967         * mini-ia64.c (peephole_pass): Fix ia64 build.
11968
11969         * mini-amd64.c (peephole_pass): Fix a warning.
11970         
11971         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11972         at a constant offset from sp/fp.
11973
11974         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11975         instead of obtaining it from *lmf in the managed method case.
11976
11977 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11980
11981 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11982
11983         * mini.h (MonoInstList): New type.
11984         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11985         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11986         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11987         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11988         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11989         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11990         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11991         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11992         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11993         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11994         MONO_INST_LIST_FOR_EACH_ENTRY,
11995         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11996         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11997         mono_inst_list_first, mono_inst_list_last,
11998         mono_inst_list_next, mono_inst_list_prev): New instruction
11999         list handling interfaces.
12000         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12001         list head 'ins_list'.
12002         (MonoInst): Replace next pointer with list head 'node'.
12003         (MonoCallInst): Make 'out_args' a MonoInstList.
12004         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12005         (MonoCompile): Delete reverse_inst_list and
12006         reverse_inst_list_len.
12007         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12008         mono_arch_lowering_pass, mono_arch_local_regalloc,
12009         mono_arch_output_basic_block, mono_arch_emit_prolog):
12010         Convert to new instruction lists.
12011         (insert_after_ins): Delete.
12012         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12013         instruction lists.
12014         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12015         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12016         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12017         mono_emulate_opcode, mono_emit_load_got_addr,
12018         inline_method, mono_method_to_ir, mono_print_bb_code,
12019         print_dfn, decompose_pass, nullify_basic_block,
12020         replace_out_block_in_code, remove_block_if_useless,
12021         merge_basic_blocks, move_basic_block_to_end,
12022         try_unsigned_compare, optimize_branches, mono_print_code,
12023         mini_select_instructions, remove_critical_edges): Likewise.
12024         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12025         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12026         mono_arch_output_basic_block, mono_arch_emit_prolog):
12027         Likewise.
12028         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12029         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12030         mono_arch_output_basic_block): Likewise.
12031         (inst_list_prepend, insert_after_ins): Delete.
12032         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12033         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12034         instruction lists.
12035         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12036         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12037         mono_arch_emit_prolog): Likewise.
12038         * cfold.c (mono_constant_fold): Likewise.
12039         * liveness.c (visit_bb, mono_analyze_liveness,
12040         optimize_initlocals): Likewise.
12041         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12042         * graph.c (mono_draw_code_cfg): Likewise.
12043         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12044         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12045         mono_ssa_cprop): Likewise.
12046         * abcremoval (get_relations_from_previous_bb, process_block):
12047         Likewise.
12048         * local-propagation (mono_cprop_invalidate_values,
12049         mono_local_cprop_bb): Likewise.
12050         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12051         peephole_pass, mono_arch_output_basic_block,
12052         mono_arch_emit_prolog): Likewise.
12053         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12054         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12055         mono_arch_emit_prolog): Likewise.
12056         (insert_after_ins): Delete.
12057         * aliasing.c (print_code_with_aliasing_information,
12058         mono_build_aliasing_information, mono_aliasing_deadce):
12059         Convert to new instruction lists.
12060         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12061         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12062         mono_arch_local_regalloc, mono_arch_output_basic_block):
12063         Likewise.
12064         (insert_after_ins): Delete.
12065         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12066         peephole_pass, mono_arch_output_basic_block): Convert to
12067         new instruction lists.
12068         * mini-codegen (InstList, inst_list_prepend,
12069         insert_after_ins): Delete.
12070         (insert_before_ins, get_register_force_spilling,
12071         get_register_spilling, free_up_ireg, free_up_reg,
12072         create_copy_ins, create_spilled_store, alloc_int_reg,
12073         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12074         to new instruction lists.
12075         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12076         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12077         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12078         (insert_after_ins): Delete.
12079         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12080         mono_arch_local_regalloc, mono_arch_output_basic_block,
12081         mono_arch_call_opcode): Convert to new instruction lists.
12082         (insert_after_ins): Delete.
12083         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12084         peephole_pass, mono_arch_output_basic_block,
12085         mono_arch_emit_prolog): Convert to new instruction lists.
12086
12087 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12090
12091         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12092         Fixes #353182.
12093
12094         * Makefile.am (version.h): Make this work with non-bash shells.
12095
12096 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12097
12098         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12099
12100 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12103         the InitializeArray optimization.
12104
12105 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12106
12107         * mini.c driver.c: Don't include os/gc_wrapper.h.
12108
12109 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12110
12111         * mini.c (print_jit_stats): Print GC statistics if available.
12112
12113 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12116
12117 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12118
12119         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12120
12121 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12124         
12125         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12126
12127         * driver.c (mono_main): Ditto.
12128
12129 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12130
12131         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12132
12133         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12134         in the vtable can't be encoded.
12135         (compile_method): Ditto.
12136
12137 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12138
12139         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12140         defined.
12141
12142         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12143         lmf->rbp.
12144
12145         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12146         the top LMF entry belongs to the current method.
12147
12148         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12149
12150 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12151
12152         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12153         
12154         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12155
12156         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12157
12158         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12159
12160         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12161
12162         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12163         implementation.
12164
12165         * basic-float.cs: Add an ulong->double cast test.
12166
12167 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini.c (mono_method_to_ir): Fix a warning.
12170
12171 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-ops.h: Add OP_SWITCH.
12174
12175         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12176         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12177
12178 2007-12-11  Geoff Norton  <gnorton@novell.com>
12179
12180         * mini-s390x.c: Minor change to the MAX() define to allow
12181         it to compile with other gcc versions.
12182
12183 2007-12-11  Geoff Norton  <gnorton@novell.com>
12184
12185         * cpu-s390x.md:
12186         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12187
12188 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12189
12190         exceptions-arm.c (mono_arch_get_restore_context): Restore
12191         the frame pointer.
12192
12193         exceptions-arm.c (throw_exception): Save the frame pointer.
12194         This is a partial fix for #323747. Only the client side is
12195         fixed.
12196
12197 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12198
12199         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12200         was using an unrelated variable to log the class which
12201         needed the cctor to be called. This was crashing on arm.
12202
12203 2007-12-09  Robert Jordan  <robertj@gmx.net>
12204
12205         * mini-x86.c (mono_arch_emit_epilog):
12206         Consider all kinds of 64-bit types. Fixes #323114.
12207
12208 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12211
12212 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12215
12216 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12217
12218         * mini.c: run type ctor before allocating an object, not only
12219         when running it's constructor method (fixes at least part of bug #342507).
12220
12221 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12222         
12223         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12224         
12225         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12226         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12227         function.
12228
12229         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12230         mono_generic_class_init_trampoline () the same as it is done with the other
12231         trampolines.
12232
12233         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12234         aot-runtime.c aot-compiler.c: Implement AOT support.    
12235
12236 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12237
12238         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12239         build for archs which don't have the vtable trampoline defined
12240         yet.
12241
12242 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12245
12246         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12247
12248         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12249
12250         * tramp-<ARCH>.c: Use the new helper function.
12251
12252 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12253
12254         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12255         trampoline call, which takes a vtable argument.
12256
12257         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12258         OP_TRAMPCALL_VTABLEs like other calls.
12259
12260         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12261         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12262         call.  Implemented a support function which fetches the vtable
12263         from a register set.
12264
12265         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12266         Implemented a generic class init trampoline, using the
12267         OP_TRAMPCALL_VTABLE opcode.
12268
12269         * mini.c: Implemented static field access when sharing generic
12270         code.  This implies initing the class using the new
12271         OP_TRAMPCALL_VTABLE call.
12272
12273 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12274
12275         * mini.c: Don't compile methods with sharing enabled if their
12276         classes are disabled for sharing.
12277
12278 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12281         opcodes. Fixes #346563.
12282
12283         * objects.cs: Add a new test.
12284
12285         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12286
12287         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12288         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12289
12290 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12291
12292         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12293
12294 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12297         code stream.
12298
12299 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12302
12303         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12304         optimization in the AOT case.
12305         
12306 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12309         
12310         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12311
12312         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12313
12314         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12315
12316         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12317         is created by the inlined delegate ctor.
12318
12319         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12320
12321         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12322
12323 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12324
12325         * cpu-x86.md: Fix the length of ckfinite.
12326
12327 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12328
12329         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12330         
12331         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12332         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12333
12334         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12335
12336         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12337         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12338
12339 2007-11-28  Martin Baulig  <martin@ximian.com>
12340
12341         * mini-x86.c
12342         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12343         after creating the trampoline.
12344
12345 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12348
12349         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12350         the same version.
12351
12352         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12353         instead of the calling method to help AOT.
12354
12355         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12356
12357 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12360         is defined.
12361
12362 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12365         
12366         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12367         (encode_method_ref): No need to handle generic method definitions specially.
12368
12369         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12370
12371         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12372         decode_klass_info.
12373
12374         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12375         encode_klass_info.
12376         (compile_method): Enable generic sharing.
12377
12378 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12381         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12382
12383         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12384         generic code.
12385
12386         * mini-trampolines.c: Fix a warning.
12387
12388         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12389         NEW_PCONST.
12390         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12391         (generic_class_is_reference_type): Remove unused function.
12392
12393         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12394         in the generic vtable trampoline case.
12395
12396         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12397         
12398         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12399         return an AOT method based on a vtable slot.
12400
12401         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12402
12403         * mini.c (mini_get_vtable_trampoline): Export this.
12404
12405 2007-11-22  Martin Baulig  <martin@ximian.com>
12406
12407         * debug-debugger.h
12408         (MonoDebuggerInfo): Move `debugger_version' up.
12409
12410 2007-11-22  Martin Baulig  <martin@ximian.com>
12411
12412         * mini-amd64.c
12413         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12414
12415         * mini-trampolines.c
12416         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12417         after compiling the method.
12418
12419 2007-11-20  Martin Baulig  <martin@ximian.com>
12420
12421         * debug-mini.c
12422         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12423         (mono_debugger_remove_breakpoint): Likewise.
12424         (mono_debugger_check_breakpoints): Likewise.
12425
12426         * debug-debugger.c: Implement the new breakpoint interface here.
12427
12428 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12431         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12432
12433         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12434
12435 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12438
12439         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12440         mini.c.
12441
12442         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12443         mini.c.
12444
12445         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12446         returning a vtype in a register.
12447
12448         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12449         here from the arch specific code.
12450
12451         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12452         mini.c.
12453
12454         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12455         (mono_arch_emit_prolog): Increment maximum prolog size.
12456
12457         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12458         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12459
12460         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12461         MonoGenericSharingContext.
12462
12463         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12464         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12465
12466 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12467
12468         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12469         which extract fields out of the runtime generic context.  Full
12470         sharing of the NEWARR opcode.
12471
12472 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12473
12474         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12475         --enable-minimal=ssa.
12476
12477 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12478
12479         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12480         mono_marshal_get_delegate_invoke () signature change.
12481
12482 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12483
12484         * mini.c: Removed the shared context in favor of the generic
12485         sharing context.  Allocate the MonoJitInfo structure with room for
12486         the generic sharing context if it's needed.
12487
12488         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12489         domain-internals.h now.
12490
12491         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12492
12493         * generic-sharing.c: Several changes for working without a shared
12494         context and instead operating on open types instead.
12495
12496 2007-11-12  David S. Miller  <davem@davemloft.net>
12497
12498        * inssel-sparc.brg: Fix double instruction emit.
12499
12500 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12501
12502         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12503         Get/Set/Address methods.
12504         
12505         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12506         mono_marshal_get_delegate_invoke signature change.
12507
12508 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12509
12510         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12511         This can happens with dynamic methods. Fixes the other bug in #322722.
12512
12513 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12514
12515         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12516         BX call sequence.
12517
12518         * mini-arm.c (arm_patch): Implement patching of BX call
12519         sequence. Fixes one of the bugs in #322722.
12520
12521 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12522
12523        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12524        under Linux.  We only need to flush every 32-byte cache line.    
12525
12526 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12527
12528         * mini.c:
12529         move_basic_block_to_end: Add branches when needed, eventually creating
12530         a new BB.
12531         optimize_branches: added a parameter that tells if it's ok to create
12532         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12533         and avoid calling move_basic_block_to_end when it's not ok.
12534         Fixes bug 318677.
12535
12536 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12537
12538         * mini.c: Abort inlining call to InitializeArray if something
12539         looks wrong.  Let the icall handle it, which now has proper safety
12540         checks.
12541
12542 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12543
12544         * mini.c (mono_spill_call): add support for soft-float.
12545
12546         * mini.c (mono_method_to_ir): add support for soft-float
12547         to inlined functions that return float.
12548
12549         * mini.c (mono_method_to_ir): add support for soft-float
12550         to cee_stsfld opcode on float fields.
12551
12552 2007-11-05  Geoff Norton  <gnorton@novell.com>
12553
12554         * mini-x86.h: Fix the structure access for X86 Leopard.
12555
12556
12557 2007-11-05  Martin Baulig  <martin@ximian.com>
12558
12559         * mini-trampolines.c
12560         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12561         after compiling the method to notify the debugger.
12562
12563 2007-11-05  Martin Baulig  <martin@ximian.com>
12564
12565         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12566
12567 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12570         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12571
12572 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12573
12574         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12575         native-to-managed wrappers.
12576         
12577 2007-11-01  Geoff Norton  <gnorton@novell.com>
12578
12579         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12580         members.
12581
12582 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12583
12584         * mini.c, mini-x86.c: when getting back from unmanaged code
12585         to managed via a marshaled delegate we also need to set the
12586         right domain.
12587
12588 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12589
12590         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12591         for amd64.
12592
12593 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12594
12595         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12596         let the debugger or other external agents to tell the JIT when
12597         a sw breakpoint has been inserted in the code that the JIT needs
12598         to be able to inspect.
12599
12600 2007-10-31  Martin Baulig  <martin@ximian.com>
12601
12602         * debug-debugger.h
12603         (MonoDebuggerInfo): Remove `runtime_class_init'.
12604
12605 2007-10-30  Martin Baulig  <martin@ximian.com>
12606
12607         * debug-mini.h
12608         (mono_debugger_thread_created): Added `MonoThread *' argument.
12609         (mono_debugger_extended_notification): New public method.
12610         (mono_debugger_trampoline_compiled): New public method.
12611
12612         * debug-mini.c
12613         (MonoDebuggerThreadInfo): Added `thread' and
12614         `extended_notifications' fields.
12615
12616         * debug-debugger.c
12617         (debugger_executable_code_buffer): New static variable.
12618
12619         * debug-debugger.h
12620         (MonoDebuggerInfo): Added `executable_code_buffer',
12621         `executable_code_buffer_size', `breakpoint_info_area',
12622         `breakpoint_table' and `breakpoint_table_size'.
12623
12624 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12625
12626         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12627         that IP  either is an unused value or the vtable pointer. IMT 
12628         calls use vtable + offset now. Reduced by almost half the size
12629         of IMT entries.
12630
12631 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12632
12633         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12634         defines to access param registers. Replace long usage with
12635         gsize as sizeof(long) != sizeof(void*) on Win64.
12636
12637         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12638         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12639         instead of non-existant _GetAddressOfReturnAddress.
12640
12641         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12642         param registers. Save/restore %rdi and %rsi in MonoLMF.
12643
12644         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12645         param registers. Modify (throw_exception) signature to take 
12646         %rdi and %rsi on Win64. 
12647
12648         Code is contributed under MIT/X11 license.
12649
12650 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12651
12652         * helpers.c: unlink debugging output files.
12653
12654 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * mini.c: Move mono_create_ftnptr () to object.c.
12657
12658 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12659
12660         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12661         optional. This function can now be used to disassemble code generated
12662         outside the JIT such as trampolines and IMT thunks.
12663
12664         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12665
12666         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12667         vtable pointer from a ldr instruction.
12668
12669         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12670         new IMT call sequence.
12671
12672         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12673         call sequence for interface invocations.
12674
12675         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12676         for imt support. This function is empty since IMT on ARM requires no
12677         special handling on the IR side.
12678
12679         * mini-arm.c (mono_arch_find_imt_method): added, required for
12680         imt support.
12681
12682         * mini-arm.c (mono_arch_find_this_argument): added, required
12683         for imt support.
12684
12685         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12686         a ldr instruction to load a value stored in the code stream.
12687
12688         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12689         for imt support.
12690
12691
12692 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * mini.c (mini_init): Install the jump trampoline callback.
12695
12696 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12697
12698         * mini-trampolines.c: handle synchronized methods with the common
12699         vtable trampoline (bug #335601).
12700
12701 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12704
12705         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12706         64 bit platforms.
12707
12708         * mini-ia64.h mini-ia64.c: Add support for IMT.
12709
12710         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12711         prolog. Fixes #331958.
12712
12713 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12714
12715         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12716
12717 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12718
12719         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12720         trampoline.
12721
12722 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12723
12724         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12725         trampoline.
12726
12727 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12730         trampoline.
12731
12732 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12733
12734         * mini-trampolines.c: changed the magic rampoline to understand
12735         the common vtable trampoline method: the method to invoke is
12736         determined by the vtable displacement of the call.
12737
12738 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12739
12740         * mini.c, mini.h: register the common vtable trampoline if the
12741         architecture supports it.
12742
12743 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12744
12745         * cpu-amd64.md: use the correct max length for tls_get.
12746
12747 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12750         CEE_STELEM_ANY. Fixes #333696.
12751
12752 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12753
12754         * exceptions-x86.c: provide more graceful handling of the case where
12755         we followed a bogus function pointer from managed code (bug #332866).
12756
12757 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12758
12759         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12760         replaces the generic_shared flag and will carry more information
12761         in the future.
12762
12763         * generic-sharing.c: Added mini_type_stack_size() which allows
12764         allows open types if given a generic sharing context.
12765         mini_get_basic_type_from_generic() takes a
12766         MonoGenericSharingContext* instead of a MonoCompile* now.
12767
12768         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12769         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12770         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12771         changes above.  Just passing arguments through to the right
12772         places.
12773
12774 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12775
12776         * mini-arm.c: unify the call emission to emit_code_seq().
12777
12778 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12779
12780         * tramp-arm.c: reduced the trampoline size.
12781
12782 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12783
12784         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12785         variable handling out of arch-specific code.
12786
12787 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12788
12789         * mini-arm.c: implemented fast delegate dispatch.
12790
12791 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12794         that fp elimination is turned off if the space required by locals is too
12795         big. Fixes #331958.
12796
12797 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12798
12799         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12800         ARM to the new style trampoline.
12801
12802 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12803
12804         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12805
12806         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12807
12808 2007-10-09  Martin Baulig  <martin@ximian.com>
12809
12810         * debug-debugger.h
12811         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12812         `field_info_offset_offset'.     
12813
12814 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12815
12816         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12817         removed more internal usage of the r11 register and made it available
12818         to the register allocator.
12819
12820 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12821
12822         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12823         when sharing generics and treat type variables as references.
12824
12825 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12826
12827         * mini-ppc.c: started removing the internal uses of register r11
12828         to eventually allow the register allocator to manage it as an
12829         additional available register.
12830
12831 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12832
12833         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12834
12835 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12836
12837         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12838         specific trampolines as they are not performance critical as a jump
12839         target (maybe align as before only for AOT code?). This saves about
12840         200 KB of native code on x86 for monodevelop startup.
12841
12842 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12843
12844         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12845         monodevelop startup.
12846
12847 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12850
12851         * mini-sparc.h mini-sparc.c: Implement IMT support.
12852
12853         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12854         its smaller and doesn't clobber sparc_g1.
12855
12856         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12857
12858 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12859
12860         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12861
12862 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12863
12864         * mini-ppc.c: implemented fast delegate invocation.
12865
12866 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12867
12868         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12869
12870 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12871
12872         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12873         code to the new style trampoline in preparation for IMT support.
12874
12875 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12876
12877         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12878         systems already. This also reduces the specific trampiline sizes and
12879         prepares for the use of r12 as the IMT identifier register.
12880
12881 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12882
12883         * mini-mips.h: endianess fix (simplified from a patch by
12884         Thomas Kunze <thommy@tabao.de>, bug #323737).
12885
12886 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12887
12888         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12889         to access ucontext fields and enable netbsd support
12890         (partially from Magnus Henoch <mange@freemail.hu>).
12891
12892 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12893
12894         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12895         use the preprocessor from the CPP env var if it is set.
12896
12897 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12898
12899         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12900         code, before interface_offset gets used.
12901
12902 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12903
12904         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12905         mono_class_setup_vtable () before accessing klass->vtable.
12906
12907 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12908
12909         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12910         hackish.
12911
12912 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12913
12914         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12915         IMT slots (this saves hundreds of KB of memory in programs like
12916         IronPython and Monodevelop).
12917
12918 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12919
12920         * mini.c: print the delegate counter.
12921
12922 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12923
12924         * mini-x86.c: make it easier to enable the debugging code for IMT
12925         slots.
12926
12927 2007-09-28  Martin Baulig  <martin@ximian.com>
12928
12929         * debug-debugger.h
12930         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12931         `mono_method_klass_offset' and `mono_method_token_offset'.
12932
12933 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12934
12935         * mini.c: First generics sharing implementation.  Can only share
12936         in very simple cases.  If sharing doesn't work it falls back to
12937         dedicated compilation.
12938
12939         * mini.h: Flag in MonoCompile to specify whether generic
12940         compilation is shared.  Flags enum for marking which generic inst
12941         of a context is used.  Prototypes for helper functions.
12942
12943         * generic-sharing.c: Helper functions for generic method sharing.
12944
12945         * optflags-def.h: Optimization flag (gshared) for enabling generic
12946         method sharing added.
12947
12948         * Makefile.am: generic-sharing.c added.
12949
12950 2007-09-19 Daniel Nauck <dna@mono-project.de>
12951
12952         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12953
12954 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12955         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12956         fixes bug 325507.
12957
12958 2007-09-19  Martin Baulig  <martin@ximian.com>
12959
12960         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12961         mono_debug_cleanup() is now part of mono_cleanup().
12962
12963 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12964
12965         * driver.c (mono_main): Fix a warning.
12966
12967 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12968
12969         * aot-compiler.c: Optimize various parts when processing large assemblies.
12970         Fixes ##325568.
12971
12972         * mini.c (mono_patch_info_hash): Improve hash function.
12973
12974 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12975
12976         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12977         
12978         Code is contributed under MIT/X11 license.
12979
12980 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12981
12982         * mini.c (mini_init): Fix a leak.
12983
12984         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12985
12986 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12987
12988         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12989
12990 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12991
12992         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12993
12994 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12997         variance tests.
12998
12999         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13000
13001         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13002
13003         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13004
13005         * aot-runtime.c (decode_patch_info): Ditto.
13006
13007 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13008
13009         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13010         static case. Cache delegates in architecture specific code, 
13011         based on number of parameters.
13012         
13013         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13014         in architecture specific code, based on number of parameters.
13015         
13016         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13017         caching happen in architecture specific code now.
13018         
13019         Code is contributed under MIT/X11 license.
13020
13021 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13022
13023         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13024         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13025         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13026
13027         Code is contributed under MIT/X11 license.
13028
13029 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13030         * mini.c: (mono_thread_abort) Fixed bug #82416.
13031
13032 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13033
13034         * mini.: hook the new managed GC allocation feature into the JIT.
13035
13036 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13037
13038         * mini.c: implementation for the new runtime tls opcode.
13039
13040 2007-09-11  Martin Baulig  <martin@ximian.com>
13041
13042         * debug-debugger.h
13043         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13044         `mono_method_inflated_offset'.
13045
13046 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13047
13048         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13049         async exceptions into a method.
13050
13051         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13052         purpose of testing whenever the unwinder works at every instruction.
13053
13054 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13055
13056         * mini.c: check accessibility of method used in ldftn (fixes
13057         bug #82635).
13058
13059 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13062
13063         * inssel.brg: Fix a warning.
13064
13065 2007-09-03  Martin Baulig  <martin@ximian.com>
13066
13067         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13068         now takes the `main_method' as argument.
13069
13070 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13073
13074 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13075
13076         * driver.c: include the cil-coff.h header on Windows.
13077         
13078         Code is contributed under MIT/X11 license.
13079
13080 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13081
13082         * mini.c, driver.c: don't include the cil-coff.h header.
13083
13084 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13085
13086         * mini.c: flag places that needs fixes fo soft-float support.
13087
13088 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13089
13090         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13091         endian systems (partially from Dean Jenkins, bug #81924).
13092
13093 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13094
13095         * mini.c (check_linkdemand): Remove embedded reference object in
13096         call to LinkDemandSecurityException.
13097         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13098         with an IntPtr instead of a reference object.
13099
13100 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * mini.c (handle_initobj): Handle alignment properly.
13103
13104         * inssel.brg (mini_emit_memset): Ditto. 
13105
13106         * inssel.brg (mini_emit_memcpy): Ditto. 
13107
13108         * inssel-sparc.brg: Ditto.              
13109
13110         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13111
13112 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13113
13114         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13115         exceptions raised in unmanaged code. Fixes part of #82594.
13116
13117 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13118
13119         * mini.c (mono_method_to_ir), declsec.c
13120         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13121
13122 2007-08-22  Martin Baulig  <martin@ximian.com>
13123
13124         * debug-mini.h
13125         (MonoDebuggerThreadInfo): New typedef.
13126         (mono_debugger_thread_table): New global variable.
13127         (mono_debugger_thread_created): New public function.
13128         (mono_debugger_thread_cleanup): New public function.
13129
13130         * debug-debugger.h
13131         (MonoDebuggerInfo):
13132         - removed `get_current_thread' and `lookup_assembly'.
13133         - removed `data_table'.
13134         - added `thread_table'.
13135
13136         * mini.c
13137         (mono_thread_start_cb): Call mono_debugger_thread_created().
13138         (mono_thread_attach_cb): Likewise.
13139         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13140         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13141         initial domain.
13142
13143         * driver.c (mono_main): Move mono_debug_init() up, before calling
13144         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13145
13146 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13147
13148         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13149         together when passing several arguments of type double (gives a small
13150         speedup and saves a few bytes of generated code).
13151
13152 2007-08-20  Jb Evain  <jbevain@novell.com>
13153
13154         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13155
13156 2007-08-20  Jb Evain  <jbevain@novell.com>
13157
13158         * mini.c (mono_method_to_ir): throw MethodAccessException
13159         and FieldAccessException instead of InvalidProgramException.
13160
13161 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13162
13163         * mini.c: CoreCLR security checks.
13164
13165         * mini.h: Removed MonoSecurityMode (moved to
13166         metadata/security-manager.h) and mono_security_mode global var
13167         (replaced by set/get functions in security-manager.h).
13168
13169         * driver.c: Added "core-clr-test" security mode for testing.  Used
13170         set-function for setting security mode.
13171
13172 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13173
13174         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13175         the new jit_info_table.
13176
13177         * driver.c: Test code for the new jit_info_table (enabled by the
13178         define MONO_JIT_INFO_TABLE_TEST).
13179
13180 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13183         detection of call <REG> instruction sequence. Fixes build on freebsd.
13184
13185 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13186
13187         * mini-exceptions.c: Fix a warning.
13188
13189 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13192         stack overflow handling code on amd64 too.
13193
13194         * mini-exceptions.c (mono_setup_altstack): Make this use 
13195         mono_thread_get_stack_bounds ().
13196
13197         * mini-x86.h: Disable sigaltstack on solaris x86.
13198
13199 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13200
13201         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13202
13203 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13204
13205         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13206
13207 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13208
13209         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13210
13211         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13212
13213 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13214
13215         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13216         due to alignment.
13217
13218 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13219
13220         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13221         to be emitted (bug #82281).
13222
13223 2007-08-01  Martin Baulig  <martin@ximian.com>
13224
13225         Merged the `debugger-dublin' branch.
13226
13227         * debug-debugger.h (MonoDebuggerInfo):
13228         Removed the `old_*' compatibility entries.
13229         Added `debugger_version' and `data_table'.
13230         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13231         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13232
13233         * debug-mini.c
13234         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13235         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13236         instead of a `gconstpointer'.
13237         (mono_debugger_insert_method_breakpoint): Return a
13238         `MonoDebugMethodAddressList *'.
13239
13240 2007-06-28  Martin Baulig  <martin@ximian.com>
13241
13242         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13243
13244 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13245
13246         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13247         __builtin_frame_address () since it is broken on older gcc versions.
13248
13249 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13252         on the stack overflow handling and made the managed stack overflows
13253         catchable in most cases using soft guard pages.
13254         * exceptions-x86.c: added code to restore the protection in the soft
13255         guard pages at the end of exception handling.
13256
13257 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13258
13259         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13260
13261 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13262
13263         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13264         exception handling.
13265
13266 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13267
13268         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13269         signal handling support until it has been ported to the new mechanism.
13270         * mini.c: fixed stack overflow detection and use the new
13271         architecture code  to handle signals on the altstack.
13272
13273 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13274
13275         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13276         stack overflows on the alt stack.
13277
13278 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13279
13280         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13281         stack overflows on the alt stack.
13282
13283 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13284
13285         * exceptions-ppc.c: cleanup preparing for altstack support.
13286
13287 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13288
13289         * exceptions-arm.c: cleanup preparing for altstack support.
13290
13291 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13292
13293         * mini.c (print_jit_stats): Output hazard pointer stats.
13294
13295 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13296
13297         * driver.c, mini.c: Replaced security mode flags with a single
13298         enum variable.
13299
13300 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13301
13302         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13303
13304 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13305
13306         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13307         (which doesn't do anything yet) for activating Core CLR
13308         (Silverlight) security.
13309
13310 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13311
13312         * mini-codegen.c: work around a possible gcc bug on arm.
13313
13314 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13315
13316         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13317         message for platforms that don't support AOT compilation.
13318
13319 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13320
13321         * mini.h, mini.c, driver.c: temporary smcs hack.
13322
13323 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13324
13325         * mini-arm.h, mini-arm.c: arm EABI fixes.
13326
13327 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13330         case.
13331
13332         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13333         trampolines taking a method argument.
13334
13335         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13336
13337         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13338         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13339
13340         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13341         JIT compilation throws an exception. Fixes #82050.
13342
13343 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13344
13345         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13346         with the MONO_EXCEPTION_ defines.
13347
13348 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13349
13350         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13351         #82117.
13352         
13353         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13354         the cause of an assertion.
13355
13356 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13357
13358         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13359         removed.
13360
13361 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13364         assert. Should fix #82103.
13365
13366 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13369         here too. Fixes #82095.
13370
13371         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13372         addresses.
13373
13374         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13375
13376         * mini-amd64.h: Enable IMT for amd64.
13377         
13378         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13379
13380 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13381
13382         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13383
13384 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13385
13386         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13387         as soon as check_linkdemand sets an exception_type.
13388
13389 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13390
13391         * mini-x86.c: fixed offsets for IMT call sequence.
13392         * mini-x86.h: enable IMT again.
13393
13394 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * trace.c (mono_trace_enter_method): Decode MonoType too.
13397
13398         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13399
13400         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13401
13402         * mini-amd64.c: Add preliminary IMT implementation.
13403         
13404 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13405
13406         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13407         understand the new IMT-base interface invocation (thanks to
13408         Daniel Nauck for the report and the remote debugging session).
13409
13410 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13411
13412         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13413
13414 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13415
13416         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13417
13418 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13419
13420         * mini-trampolines.c: implement AOT IMT support.
13421         * mini-x86.h: enable IMT support for wider testing.
13422
13423 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * inssel.brg (emit_imt_argument): Add aot support here.
13426
13427         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13428
13429 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13430
13431         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13432         of the IMT implementation, partially from massi, with my
13433         implementation of the bsearch sequence. Disabled by default until
13434         the AOT code is implemented.
13435
13436 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13439
13440         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13441
13442 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13443
13444         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13445         arch-independent IMT JIT code from Massimiliano
13446         Mantione (massi@ximian.com) with small cleanups from me.
13447
13448 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13449
13450         * Makefile.am: fix svn invocation to get the svn revision to be
13451         independent of the local language (build fix).
13452
13453 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13454
13455         * mini.c (inline_method): Reset cfg->exception_type if the
13456         inlining is aborted.  Fixes: 82049.
13457
13458 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13459
13460         * mini.c: remove assert from exception handling code when exception_ptr
13461         is not set.
13462
13463 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * mini.c (mono_codegen): Add an assert.
13466
13467         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13468         enter and leave code.
13469         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13470
13471 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13472
13473         * mini-ppc.c: fixed memory corruption for localloc(0)
13474         (bug #81852).
13475
13476 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13477         
13478         * mini.c: Fix warnings.
13479
13480 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13481
13482         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13483         to emit better double->int conversions.
13484
13485 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13486
13487         * mini.c: the provided Min/Max optimizations are valid for unisgned
13488         ints.
13489
13490 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13491
13492         * 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
13493
13494 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13495
13496         * mini.c (mono_running_on_valgrind): Add support for reporting the
13497         method and  its boundaries to valgrind.
13498
13499 2007-06-28  Martin Baulig  <martin@ximian.com>
13500
13501         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13502
13503 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13506
13507         * generic.2.cs: Add new test case.
13508
13509 2007-06-25  Martin Baulig  <martin@ximian.com>
13510
13511         Merged the `debugger-dublin' branch.
13512
13513         * debug-mini.c
13514         (mono_debugger_insert_method_breakpoint): New public method.
13515         (mono_debugger_remove_method_breakpoint): Likewise.
13516         (mono_debugger_check_breakpoints): New static method.
13517         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13518
13519         * debug-debugger.h (MonoDebuggerInfo):
13520         Renamed (to keep backward compatibility in the vtable):
13521         `insert_breakpoint' -> `old_insert_breakpoint'.
13522         `remove_breakpoint' -> `old_remove_breakpoint'.
13523         `create_string' -> `old_create_string'.
13524         `lookup_class' -> `old_lookup_class'.
13525         `lookup_type' -> removed; changed into a dummy field.
13526         `lookup_assembly' -> `old_lookup_assembly'.
13527         Added (same functionality, but different signature):
13528         `create_string', `lookup_class', `lookup_assembly'
13529         Added new:
13530         `get_method_addr_or_bpt', `remove_method_breakpoint',
13531         `runtime_class_init'.
13532
13533         * debug-debugger.c: Merged the `debugger-dublin' branch.
13534
13535 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13538         well.
13539         (peephole_pass): Likewise.
13540
13541 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13542
13543         * driver.c: hopefully make setaffinity work also for ancient
13544         versions of linux.
13545
13546 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13547
13548         * driver.c : win32 build fix.
13549
13550 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13551
13552         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13553         processor if it is set.
13554
13555 2007-06-21  Martin Baulig  <martin@ximian.com>
13556
13557         * debug-mini.h: New file.
13558
13559         * debug-mini.c
13560         (mono_debugger_insert_breakpoint_full): Moved here from
13561         ../metadata/mono-debug-debugger.c.
13562         (mono_debugger_remove_breakpoint): Likewise.
13563         (mono_debugger_breakpoint_callback): Likewise.
13564
13565 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13566
13567         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13568         changes in MonoGenericClass.
13569
13570 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13573
13574 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13575
13576         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13577         removal of MonoGenericMethod.
13578
13579 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13580
13581         * mini-exceptions.c: hooks for the exception events profiling API.
13582
13583 2007-06-14  Randolph Chung  <tausq@debian.org>
13584
13585         * Makefile.ma: Add hppa target.
13586         * mini-arch.h: Include mini-hppa.h
13587         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13588         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13589         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13590
13591 2007-06-14  Randolph Chung  <tausq@debian.org>
13592
13593         * inssel.brg: Add rules for "chained" compare-branch operations so that
13594         a single compare op can affect multiple branches.  Adjust cost for
13595         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13596         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13597         cost for some rules so that they can more easily be overridden by
13598         per-arch rules (with fixes from lupus).
13599         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13600
13601 2007-06-13  Randolph Chung  <tausq@debian.org>
13602
13603         * mini-ops.h: Reorder branch ops so that they match the order of the
13604         corresponding CEE_* ops.  The code expects them this way.
13605         Add new ops for HPPA target.
13606         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13607
13608 2007-06-13  Randolph Chung  <tausq@debian.org>
13609
13610         * mini-exceptions.c: Handle cases where the stack grows towards
13611         larger addresses.
13612         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13613
13614 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13615
13616         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13617         counter.
13618         * driver.c: explain where a non-matching corlib is found.
13619
13620 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13621
13622         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13623
13624 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13625
13626         * mini-exceptions.c: Generate a method profile leave event during
13627         an exception to ensure that the profiler gets notified.
13628
13629 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13630
13631         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13632         branch.
13633
13634         * cpu-amd64.md: Add long_and/or/xor opcodes.
13635
13636 2007-06-06  Wade Berrier  <wberrier@novell.com>
13637
13638         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13639         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13640         length of instruction shr_imm (expected 8, got 10)
13641
13642 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13645
13646 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13647
13648         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13649         MonoInternalHashTable again (fixed bug in the internal hash table
13650         code).
13651
13652 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13653
13654         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13655         Have to figure out what makes it crash the SWF regression.
13656
13657 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13660
13661 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13662
13663         * mini.c: optimize out the type check when storing null in a
13664         reference array.
13665
13666 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13667
13668         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13669         MonoInternalHashTable.
13670
13671 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13672
13673         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13674         signed integer methods.
13675
13676 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13677
13678         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13679         permanently since the current approach doesn't work.
13680
13681 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13684         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13685
13686 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13689         the sreg2==rdx case.
13690         
13691         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13692         account if it contains a rex prefix.
13693         (peephole_pass): Handle OP_FMOVE as well.
13694
13695 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13696
13697         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13698         as it causes regressions.
13699
13700 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13701
13702         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13703         static case as well.
13704
13705         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13706
13707         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13708         (mono_arch_get_this_arg_from_call): Ditto.
13709
13710         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13711
13712         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13713         invoke_impl field.
13714
13715         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13716         (mono_arch_get_this_arg_from_call): Ditto.
13717
13718         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13719         
13720         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13721         try to create optimized invoke code and use that for further invocations. 
13722         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13723
13724         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13725
13726 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13727
13728         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13729         sealed classes or methods.
13730         *devirtualization.cs: tests for the new optimization
13731
13732 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13735         by the update_volatile () function.
13736
13737 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13740         require it.
13741
13742         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13743
13744 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13745
13746         * mini.c: Add configure checks for header files.
13747         * mini-x86.c: Add configure checks for header files.
13748         * trace.c: Add configure checks for header files.
13749         * aot-runtime.c: Add configure checks for header files.
13750         * aot-compiler.c: Add configure checks for header files.
13751         * driver.c: Add configure checks for header files.
13752         * mini-codegen.c: Add configure checks for header files.
13753         
13754         Code is contributed under MIT/X11 license.
13755
13756 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13759         icompare_imm -128 + op_iclt. Fixes #81703.
13760
13761 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13764
13765 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13766
13767         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13768         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13769         so that all isinst checks now use "interface_bitmap".
13770
13771 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13772
13773         * cpu-amd64.md (jmp): Fix a warning.
13774
13775         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13776
13777         * basic.cs: Add new regression test.
13778
13779         * basic.cs: Remove test which is now in basic-long.cs.
13780
13781         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13782
13783         * basic-long.cs: Add new test.
13784         
13785 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13786
13787         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13788
13789 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13792
13793         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13794         places.
13795         
13796         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13797         throwing code a bit.
13798
13799         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13800         the exception throwing code a bit.
13801
13802         * mini-x86.c (get_call_info): Allocate result from a mempool.
13803
13804 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13805
13806         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13807
13808         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13809
13810         * mini.h (MonoCompile): Add 'token_info_hash' field.
13811
13812         * mini.c: Save token->method associations during compilation so the AOT 
13813         compiler can use it.
13814         
13815         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13816         which reference generic classes and methods.
13817
13818 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13819
13820         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13821
13822         * aot-compiler.c (compile_method): Fix a typo in a comment.
13823
13824         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13825
13826         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13827         everything generic.
13828
13829         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13830
13831 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini.h (MonoCompile): Add 'args' field.
13834
13835         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13836         into cfg->args.
13837
13838         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13839
13840 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13843
13844         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13845
13846         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13847         opcodes for some opcodes.
13848
13849         * mini.h *.brg *.c: Use the new opcodes.
13850
13851 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13852
13853         * mini.h: Bumped aot revision.
13854
13855         * inssel.brg: modified code generation of type checks for interfaces
13856         to use the new "MonoClass.interface_bitmap" instead of the old
13857         "MonoClass.interface_offsets".
13858
13859 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13860
13861         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13862
13863 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13866         64 bit platforms.
13867
13868 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13869
13870         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13871
13872 2007-04-27  Wade Berrier  <wberrier@novell.com>
13873
13874         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13875         mini.h) to fix build.
13876
13877 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13880         
13881         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13882         causes the corlib unit tests to fail.
13883
13884 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13887
13888         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13889
13890         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13891         opcodes to the comparison relations.
13892
13893         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13894         opcodes to their types.
13895         
13896         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13897
13898         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13899         it in cfg->arch.cinfo.
13900
13901         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13902
13903         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13904         cfg->cil_offset_to_bb.
13905
13906 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13907
13908         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13909         created becase of initlocals.
13910
13911 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13914         Sergey Tikhonov <tsv@solvo.ru>.
13915
13916 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13917
13918         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13919
13920 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13921
13922         * cpu-s390.md (break): Correct the length of break instruction.
13923
13924 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13925
13926         * mini.c: fix a couple of soft-float issues and comments.
13927
13928 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13929
13930         * trace.c (is_filenamechar): - is also a filename char.
13931
13932 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13933
13934         * mini-s390.c: Correct checking for enum type in return value processing.
13935
13936 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13937
13938         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13939         (version.h): Makefile is in the build directory.
13940
13941 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13942
13943         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13944
13945 2007-04-11  Martin Baulig  <martin@ximian.com>
13946
13947         * mini.c (can_access_member): Fix handling of generic classes;
13948         fixes #81259.
13949
13950 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13951
13952         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13953
13954 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13955
13956         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13957
13958 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13959
13960         * mini-codegen.c: make sure the right spill amount is
13961         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13962
13963 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13964
13965         * mini-ppc.c: fixes for the fp_branch_nan test.
13966
13967 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * basic.cs: Comment out new test which still fails on ia64.
13970
13971 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13972
13973         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13974
13975 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13976
13977         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13978
13979 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13980
13981         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13982         on 64 bit machines. Fixes part of #80738.
13983
13984         * basic.cs: Add regression test.
13985
13986 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * inssel.brg basic.cs: Revert previous change to fix build.
13989
13990         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13991         platforms.
13992         
13993         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13994
13995         * basic.cs: Add new regression test.
13996
13997 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13998
13999         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14000         many arguments.
14001
14002 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14003
14004         * cpu-s390x.md: Correct length of break instruction.
14005
14006 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14007
14008         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14009         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14010
14011 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14012
14013         * *.c: Begin WIN64 port.
14014         * mini.c:  Use correct register in profiler.
14015         * mini-amd64.c: No inline assembly on Win64.
14016         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14017         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14018         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14019         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14020         mono_arch_ip_from_context for Win64.
14021         
14022         Contributed under MIT/X11 license.
14023
14024 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14025
14026         * exceptions-amd64.c (seh_handler): Ditto.
14027
14028         * exceptions-x86.c (seh_handler): Fix a memory leak.
14029
14030 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14031
14032         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14033         mini-s390x.c: fixed peephole optimizations to deal
14034         correctly with 1 and 2 byte reload avoidance.
14035
14036 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14037
14038         * cpu-s390.md, cpu-s390x.md: update localloc length.
14039
14040 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14041
14042         * cpu-g4.md: added missing descriptions.
14043
14044 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14045
14046         *  Makefile.am: Add support so the tail tests are not executed on
14047         PowerPC as that is a known limitation of the PowerPC port.
14048
14049 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14050
14051         * runmdesc.bat:  Move to msvc directory.
14052         
14053 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14054
14055         * runmdesc.bat:  Run executable that was produced by the current
14056         target and sent via an argument.
14057         
14058 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14059
14060         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14061         #81102.
14062
14063         * generics.2.cs: Add regression test.
14064
14065 2007-03-09  Wade berrier  <wberrier@novell.com>
14066
14067         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14068
14069 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14070
14071         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14072         AOT code depends on this.
14073
14074 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14075
14076         * mini.c: more precise tracking of types in the eval stack
14077         (part of fix for bug #81044).
14078
14079 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14080
14081         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14082
14083         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14084
14085 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14088
14089         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14090
14091 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14092
14093         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14094         a pointer on 64 bit systems. Fixes #80190.
14095
14096         * iltests.il: Add new regression test.
14097
14098 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14099
14100         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14101
14102 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14103
14104         * trace.c: Remove an erroneous alignemnt check when tracing.
14105           Fixes --trace on OSX86.
14106
14107 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14108
14109         * mini-$(arch).h: initialize SP in context for all the archs.
14110
14111 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14112
14113         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14114         regressions in the thread tests.
14115
14116 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14117
14118         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14119         - fixed implementation of LOCALLOC opcode
14120         - implemented non-un compare for floats
14121         - code cleanup
14122         - implementation of FDIV and CKFINITE opcodes
14123         - fixes for latest mono updates
14124         - additional arch opcodes
14125
14126 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14127
14128         * Makefile.am: simplify and merge rules for cross-compilation.
14129
14130 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14131
14132         * local-propagation.c: Actually *apply* the fix for bug 80591...
14133
14134 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14135
14136         * mini-exceptions.c: backuot part of the last change
14137         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14138
14139 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14140         * inssel.brg: Fix bug 59286.
14141
14142
14143 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14144
14145         * mini-exceptions.c: patch from Zoltan to correctly check for
14146         stack boundaries (using the stack register, not the frame register),
14147         fixes bugs #80724, #79717.
14148
14149 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14150
14151         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14152         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14153
14154         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14155         presence of frame pointer elimination.
14156
14157 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14158         
14159         * mini-x86.h: NetBSD UCONTEX_REG defines.
14160
14161 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * inssel-amd64.brg: Fix amd64 build.
14164
14165 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14166
14167         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14168         on amd64.
14169
14170 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14171
14172         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14173         ends.
14174
14175         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14176
14177 2007-01-30 Mark Mason <mason@broadcom.com>
14178
14179            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14180            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14181            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14182            beginning support for CEE_JMP [not quite working yet]
14183            * tramp-mips.c: LMF handling now works
14184         
14185 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14188
14189         * mini.h (NULLIFY_INS): New macro.
14190
14191 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14192
14193         * mini.c: statistical profiler fix for windows, patch
14194         from Tor Lillqvist (tml@novell.com).
14195
14196 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14197         * local-propagation.c: Fix bug 80591.
14198
14199 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14200
14201         * Makefile.am: put back the --export-dynamic option as with
14202         the previous gmodule flags (thanks to Robert Jordan).
14203
14204 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14207
14208         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14209         simplify and speed up the local register allocator. Also rename some fields
14210         like iassign->vassign.
14211         
14212         * regalloc.c: Remove some functions which are no longer used since their
14213         inlined version is in mini-codegen.c.
14214         
14215         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14216
14217         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14218
14219 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14222         narrowing. Fixes #80622.
14223
14224         * iltests.il: Add new regresssion test. 
14225
14226 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14227
14228         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14229         debug-debugger.c, debug-debugger.h: warning fixes.
14230         * driver.c: updated copyright year and made it fit in one line.
14231
14232 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14233
14234         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14235
14236 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14239
14240         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14241
14242         * iltests.il: Add new test for bug #80507.
14243
14244 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14245
14246         * mini-arm.h: use soft-float also on vfp for now.
14247
14248 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini.c: fix some more soft-float issues.
14251
14252 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14255
14256 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14257         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14258         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14259         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14260
14261 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14262
14263         * mini-arm.c: typo fix.
14264
14265 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14266
14267         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14268
14269 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14270
14271         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14272         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14273
14274         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14275
14276         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14277
14278         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14279         
14280         * inssel.brg: Fix a warning.
14281
14282         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14283
14284         * abcremoval.c ssa.c ssapre.c: Update after this change.
14285         
14286         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14287
14288         * dominators.c (df_set): Use mono_bitset_union_fast.    
14289
14290 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14291
14292         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14293         mini-codegen.c: reduce relocations and memory usage for the cpu
14294         description.
14295
14296 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14297
14298         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14299
14300         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14301         to reduce their size.
14302
14303 2007-01-19 Mark Mason <mason@broadcom.com>
14304
14305         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14306         * mini-mips.c: more configuration macros, support long conditional branches, additional
14307         asserts, fix epilog instrumentation.
14308         * mini-mips.h: use standard stack walk
14309         * cpu-mips.md: increase size of div, rem and conditional branches
14310         
14311 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14312
14313         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14314         to cpu spec data.
14315
14316 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14319         (compile_method): Ditto.
14320
14321         * aot-runtime.c (decode_klass_info): Ditto.
14322
14323         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14324         needed by the code generated by inssel.brg. Also fix a warning.
14325
14326 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14327
14328         * mini.c: deal with enums that become genericinsts by
14329         being nested in a generic class (bug #79956).
14330
14331 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14332
14333         * mini.c: match the generic definition to check for
14334         private access with generic types (bug #78431).
14335
14336 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14337
14338         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14339         to make life easier for people cross-compiling that insist on not
14340         using scratchbox.
14341
14342 2007-01-17 Mark Mason <mason@broadcom.com>
14343
14344         * inssel-long.brg: patch to deal with mips missing flags
14345         * inssel-long32-mips.brg: implement overflow checks
14346         * insset-mips.brg: implement overflow checks
14347         * mini-mips.h: implement conditional exception handling
14348         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14349           Remove unused code, minor cleanups.
14350         * exceptions-mips.c: minor cleanups
14351         * mini-ops.h: add mips conditional exception ops
14352         * cpu-mips.md: add mips conditional exception ops
14353
14354         
14355 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14356
14357         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14358         to deal with mips missing of flags.
14359
14360 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14361
14362         * exceptions-ppc.c: execute fault handlers.
14363
14364 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14365
14366         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14367
14368 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14369
14370         * mini.c: handle also floating point values in initialize_array.
14371
14372 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14373
14374         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14375         array initialization and make it conditional on the intrins option.
14376
14377 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14380         relocations and put the patch info names close to the enum definition.
14381
14382 2007-01-15 Mark Mason <mason@broadcom.com>
14383
14384         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14385
14386 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14387
14388         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14389
14390 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14391
14392         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14393
14394 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14395
14396         * Makefile.am: distribute the mips sources.
14397
14398 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14399
14400         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14401         directly.
14402
14403 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14404
14405         * cpu-x86.md: back out for now as this triggers other regressions.
14406
14407 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14408
14409         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14410         to eax:edx, so ecx can't get allocated to them (bug #80489).
14411
14412 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14413
14414         * mini.c, mini-exceptions.c: enabled running fault handlers
14415         (bug #80469).
14416
14417 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14418
14419         * driver.c: If nothing fail, do not use the string "failed",
14420         because it makes it very annoying to view test result logs on the
14421         web. 
14422
14423 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14424
14425         * debug-debugger.c (mono_debugger_main): Rename "main" to
14426         "main_method" to prevent a warning.
14427
14428         Remove a warning for unused field.
14429
14430 2006-12-28  Martin Baulig  <martin@ximian.com>
14431
14432         * debug-debugger.c
14433         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14434
14435 2006-12-22  Martin Baulig  <martin@ximian.com>
14436
14437         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14438         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14439         seperate `.mdb_debug_info' section, so we can access it from the
14440         debugger even if the binary is stripped.
14441
14442         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14443         from the `.mdb_debug_info' here to prevent the linker from
14444         removing that section.
14445
14446         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14447         mdb-debug-info64.s.
14448
14449 2006-12-19  Robert Jordan  <robertj@gmx.net>
14450
14451         * mini-x86: enable the code to return small structures in
14452         registers for FreeBSD as well. Fixes bug #80278.
14453         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14454
14455 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14456
14457         * mini-x86.c: align the stack when calling the profiler
14458         function instrumenting the prolog (on OSX).
14459
14460 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14461
14462         * mini.c: emit a break opcode where Debugger.Break () is called.
14463
14464 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14465
14466         * mini.c (mono_method_to_ir): Provide useful information on this
14467         assert, to prevent others from debugging like I did.
14468
14469 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14470
14471         * mini.c: enable code which was incorrectly commented
14472         (bug #80235).
14473
14474 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14475
14476         * mini-x86.c: enable on OSX, too, the code to return small
14477         structures in registers.
14478
14479 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14480
14481         * mini-x86.c: remove the use of the dynamic code manager here, too.
14482
14483 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14484
14485         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14486         mono_debugger_create_notification_function() to use
14487         mono_global_codeman_reserve () instead of a dynamic code manager.
14488
14489 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14490
14491         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14492         ves_array_element_address() jit icall and use a generated
14493         managed method instead (which is about 4 times faster for a rank 3
14494         array access).
14495
14496 2006-11-29  Mark Mason  <mason@broadcom.com>
14497
14498         * basic-calls.cs: additional tests for passing
14499         structures as function arguments.
14500
14501 2006-11-29  Mark Mason  <mason@broadcom.com>
14502
14503         * mini-mips.h: disable custom exception handling
14504         * mini-mips.c: throw/rethrow should use jalr to call
14505         exception stubs.  Fixed bug with passing structures
14506         by value. More support for tracing floating point
14507         functions.
14508
14509 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14510
14511         * mini.c: fixed typo in the soft-float ldind.r4 handling
14512         (bug #80086).
14513
14514 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14515
14516         * mini.c, mini.h, driver.c: added --runtime command line
14517         option to select a different runtime than the autodetected one.
14518         * jit.h: added API for embedders to initialize with a specific
14519         runtime version.
14520
14521 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14522
14523         * mini.c: handle also boxing of r4 values (bug #80024).
14524
14525 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14526
14527         * mini-ppc.c: force indirect calls until we reserve
14528         enough address space for all the generated code.
14529
14530 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14531
14532         * exceptions-arm.c: workaround bugs in the libc definition
14533         of struct ucontext.
14534
14535 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14536
14537         * inssel.brg: fixes from me and Mark Mason.
14538
14539 2006-11-23  Dick Porter  <dick@ximian.com>
14540
14541         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14542         semaphore display now we've fixed the initial value
14543
14544 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14545
14546         * inssel.brg: partially revert the last change to fix the build.
14547
14548 2006-11-21  Mark Mason  <mason@broadcom.com>
14549
14550         * inssel.brg: Add and use compare-and-branch macros to support
14551         architectures that do not have condition code registers (ie. MIPS).
14552         * *-mips.{c,brg,md}: Fix copyright statements
14553
14554 2006-11-20  Mark Mason  <mason@broadcom.com>
14555
14556         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14557         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14558         * mini.h: Added declaration for mono_print_ins()
14559         * mini-codegen.c: added ins_spec initializer for MIPS
14560         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14561         vreg to be virtual and hreg to be non-virtual.
14562         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14563         is not yet working/implemented correctly.
14564         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14565         non-static, fixup calls to print_ins() from other parts in the file.
14566
14567 2006-11-20  Mark Mason  <mason@broadcom.com>
14568
14569         * basic-calls.cs: added tests for passing structures as arguments
14570         to calls.
14571
14572 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14573
14574         * inssel-long32.brg: optimize signed division by power of two.
14575
14576 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14577
14578         * mini-arm.c: added support for interworking with thumb code
14579         (mono must be still be built using the ARM instruction encoding).
14580
14581 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14582
14583         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14584         verifier has different rules for it.   Fixes a few verifier issues
14585         in the test suite.
14586
14587         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14588         at the end, so people know what happened.
14589
14590 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14591
14592         * brach-opts.c: in optimize_exception_target() make sure we
14593         are in a catch clause (fixes bug #79871).
14594
14595 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14596
14597         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14598         more soft-float support fixes.
14599
14600 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14601
14602         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14603         that are passed half on the stack and half in registers.
14604
14605 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14606
14607         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14608         more mips integration work from Mark E Mason 
14609         <mark.e.mason@broadcom.com>.
14610
14611 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14612
14613         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14614         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14615         tramp-mips.c: added sources for the mips port, not
14616         integrated in the build yet. Contributed by
14617         Mark E Mason <mark.e.mason@broadcom.com>.
14618
14619 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14620
14621         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14622
14623 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14624
14625         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14626         put the soft-float rules in its own file since it seems to
14627         break s390 compilation.
14628
14629 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini-arm.c: fixed wrnings.
14632
14633 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14634
14635         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14636         inssel-arm.brg: ARM support for soft-float.
14637
14638 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14639
14640         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14641         loads and stores of 32 bit fp values.
14642
14643 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14644
14645         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14646
14647         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14648         works. Fixes #79852 and #79463.
14649
14650 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14653         more soft-float support WIP and fixes.
14654
14655 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14656
14657         * mini-arm.c: some VFP updates.
14658
14659 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14660
14661         * mini-exceptions.c: 0 is a valid local var offset in some
14662         architectures, don't assert (bug #78508).
14663
14664 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14665
14666         * exceptions-arm.c: fixed off by one error in stack walk code.
14667
14668 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini.h, mini.c: more precise tracking of type load exceptions.
14671
14672 2006-11-03  Robert Jordan  <robertj@gmx.net>
14673
14674         * Makefile.am: [WIN32] Add monow.exe target.
14675         * driver.c: [WIN32] Don't detach the console when debugging.
14676         Fixes bug #79797.
14677         
14678 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14679
14680         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14681
14682 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14683
14684         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14685
14686         * driver.c (mini_regression): Fix --regression with AOT.
14687
14688         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14689
14690 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14691
14692         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14693
14694         * mini-sparc.h: Don't use sigaction on sparc/linux.
14695
14696         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14697
14698         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14699
14700         * mini-exceptions.c: Add proper include files for getpid ().
14701
14702 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14705         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14706         method.
14707
14708         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14709         name cache to reduce its size.
14710
14711         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14712
14713 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14714
14715         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14716         the mono_lmf TLS variable.
14717
14718         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14719         trampoline lmf frames.  
14720
14721         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14722
14723 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14724
14725         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14726         the mono_lmf TLS variable.
14727
14728         * mini-exceptions.c: Access the LMF structure through accessors.
14729
14730         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14731         variable instead of in jit_tls->lmf.
14732
14733         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14734         
14735         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14736         trampoline lmf frames.
14737
14738         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14739
14740 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14741
14742        * mini.c trace.c mini-x86.c: Revert these too.
14743         
14744        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14745        signature change.
14746
14747 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14748
14749         * genmdesc.c: removed now dead code.
14750
14751 2006-10-09  Robert Jordan <robertj@gmx.net>
14752
14753         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14754
14755 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14756
14757         * mini.h: do not leave gaps in the opcode values.
14758
14759 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14760
14761         * jit-icalls.h: flag functions as internal here, too.
14762
14763 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14764
14765         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14766         functions with the internal attribute.
14767
14768 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14769
14770         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14771
14772 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14773
14774         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14775         for soft-float.
14776
14777 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14780         tail calls as on other platforms.
14781
14782         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14783
14784         * iltests.il: Add a few tailcall tests.
14785
14786 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14787
14788         * driver.c: fix loop for old compilers (bug #79521).
14789
14790 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14791
14792         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14793
14794         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14795
14796         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14797         metadata without any code.
14798
14799         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14800         more precise debugging information using gdb.
14801
14802 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14803
14804         * inssel-ia64.brg: Make the helper methods static.
14805
14806 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14807
14808         * inssel-x86.brg: make the helper methods static.
14809
14810 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14811
14812         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14813
14814 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14815
14816         * mini.c: updates for monoburg changes.
14817         * inssel.brg: make a few helper functions static as they should.
14818
14819 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * Makefile.am: Move mini-codegen.c to common_sources.
14822
14823 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14824
14825         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14826         instructions.
14827         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14828         mini-ppc.h: port to use the common local register allocator.
14829
14830 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14831
14832         * mini.h: Remove the comment too then.
14833
14834 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14835
14836         * mini.h: put back backend.data which is to be used shortly and
14837         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14838         pointers on 4 byte boundaries it'd have much bigger issues running
14839         and you can ifdef it out anyway.
14840
14841 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14844         MonoInst size by 4 bytes on 64 bit machines.
14845
14846 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14847
14848         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14849         replacement with more meaningful field names. Arch maintainers, please
14850         check the assigned names are good enough for your arch.
14851
14852 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14855         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14856
14857 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14860         relocations and memory requirements, put the optimization flags
14861         definitions in their own file.
14862
14863 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14864
14865         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14866
14867         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14868
14869 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14872
14873 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14874
14875         * inssel.brg: use the correct function to get the size of an item
14876         in an array, given an element class.
14877         * aot-compiler.c: do not access class->class_size directly.
14878
14879 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14880
14881         * mini.h, debug-mini.c: added a debugging function to print
14882         info about local variables and arguments in a jitted method.
14883
14884 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14887
14888         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14889
14890 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14893         inner and outer loops when passing vtypes.
14894
14895 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14896
14897         * mini-ppc.c: take into account the cpu errata for cache flushing
14898         which caused some random errors (bug #79381).
14899
14900 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14901
14902         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14903         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14904
14905 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14906
14907         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14908         loaded.
14909
14910         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14911         freebsd ports tree.
14912
14913         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14914         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14915
14916         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14917         displacement.
14918
14919 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14920
14921         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14922
14923 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14924
14925         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14926         macro does not have to be changed during debugging.
14927
14928         * 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>.
14929
14930         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14931
14932         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14933         
14934         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14935         MONO_ARCH_NO_EMULATE_MUL is defined.
14936
14937         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14938
14939         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14940
14941         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14942
14943         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14944         
14945 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14946
14947         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14948         stuff to mini-exceptions.c where it is used.
14949
14950         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14951         setup code, the real one is in mini-exceptions.c.
14952
14953         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14954         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14955         some changes from the freebsd ports tree.
14956
14957         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14958         constants.
14959         
14960         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14961
14962 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14963
14964         * mini.c: on Linux, check for /proc to be mounted
14965         (bug# 79351, novell bug#201204).
14966
14967 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14968
14969         * mini.c: handle cases where pthread_attr_getstack() behaves
14970         incorrectly (bug #78096).
14971
14972 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14973
14974         * mini-arm.c: support larger stack frames (bug #79272).
14975
14976 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14977
14978         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14979
14980         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14981         tokens.
14982
14983         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14984         mono_class_from_name () to find a class from its name.
14985
14986         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14987
14988 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14989
14990         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14991
14992 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14993
14994         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14995
14996 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14999         callinfo->trampoline.
15000
15001         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15002         fixes #79271.
15003         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15004         future.
15005
15006 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15007
15008         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15009
15010 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15011
15012         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15013         stats.method_trampolines, it is already done by the generic trampoline code.
15014
15015         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15016         
15017 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15020
15021         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15022
15023         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15024
15025         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15026         
15027         * mini.c (print_jit_stats): Print new stats.
15028
15029         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15030
15031 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15032
15033         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15034         Address on two dimensional arrays. Fixes #78729.
15035
15036         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15037
15038         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15039         a method.
15040
15041         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15042
15043         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15044         #79130.
15045         
15046         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15047         a race condition.
15048         (mini_get_ldelema_ins): Ditto.
15049
15050 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15051
15052         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15053         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15054         Fixes #79213.
15055
15056 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15057
15058         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15059         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15060
15061         * exceptions-s390x.c: Cosmetic change.
15062
15063         * tramp-s390.c: Fix warning.
15064
15065         * cpu-s390.md: Correct length of mul_imm.
15066
15067 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15068
15069         * aot-compiler.c: added binary writer with ELF backend
15070         implementation (only on Linux/x86 for now).
15071
15072 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * Makefile.am: Don't run net 2.0 AOT tests.
15075
15076         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15077         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15078
15079         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15080
15081 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15082
15083         * aot-compiler.c: simplified and refactored the asm-writing code
15084         to allow different backends.
15085
15086 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15087
15088         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15089
15090         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15091         little. Share patches of type TYPE_FROM_HANDLE as well.
15092
15093         * mini.c (mono_patch_info_equal): New helper function.
15094         (mono_patch_info_hash): Ditto.
15095
15096         * aot-compiler.c (emit_method_code): Fix s390 build.
15097
15098         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15099         is not handled because it is stored as a flag and not as a type ctor. Fixes
15100         #79016.
15101
15102 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15103
15104         * aot-compiler.c: Fix computation of GOT slot statistics.
15105         
15106         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15107         Also remove support for not PIC AOT.
15108
15109         * mini.h: Bump AOT file format version.
15110
15111         * objects.cs: Add a test for #78990.
15112
15113         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15114         (peter.dettman@iinet.net.au). Fixes #79087.
15115
15116         * basic-long.cs: Add a test for the above.
15117
15118 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15121         
15122         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15123         code somewhat.
15124
15125 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15126
15127         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15128         exceptions.
15129
15130 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15131
15132         * mini.c: Don't verify COM proxy invoke calls
15133         
15134
15135 2006-08-10  Dick Porter  <dick@ximian.com>
15136
15137         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15138         which process is holding semaphores locked.
15139
15140 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * mini-ia64.c mini-amd64.c: Fix #79027.
15143
15144         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15145
15146         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15147
15148         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15149         implicit arguments in a vararg call. Fixes #79027.
15150
15151 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15154         (mono_get_array_new_va_signature): Ditto.
15155
15156 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15157
15158         * aot-runtime.c: Call init_plt lazily.
15159
15160         * inssel-long.brg: Fix unsigned long->int conversion.
15161
15162         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15163
15164         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15165         that most data is now in the .rss/.data section.
15166
15167 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15168
15169         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15170
15171         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15172
15173         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15174
15175         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15176
15177         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15178         virtual call. Fixes #79010.
15179
15180         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15181         and use the result as the this argument in the real call.
15182
15183         * generics.2.cs: Add a new test for #79010.
15184         
15185 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15186
15187         * mini-x86.c: Fix a warning.
15188
15189         * aot-compiler.c: Add a bunch of statistics.
15190
15191         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15192
15193 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15194
15195         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15196
15197 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15198
15199         * 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>.
15200
15201 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15202
15203         * mini.c (mono_method_to_ir): Obtain the original method in the
15204         CIL stream and use this to perform validation.
15205
15206         Fixed: #78816
15207
15208 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15209
15210         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15211         (mono_arch_call_opcode): Ditto.
15212
15213         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15214         #78826.
15215
15216         * mini.c (mono_patch_info_dup_mp): New helper function.
15217         
15218         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15219         compilation. Fixes #78827.
15220
15221 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15222
15223         * declsec.c: Use original security informations for
15224           MONO_WRAPPER_MANAGED_TO_MANAGED.
15225
15226 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15227
15228         * mini.c: Allow Com Interop methods/classes and
15229         don't verify COM wrapper calls
15230         
15231
15232 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * inssel-long32.brg: Fix long->i4 checked conversion.
15235
15236         * exceptions.cs: Add a test for the above.
15237
15238 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15239
15240         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15241
15242         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15243         leaks.
15244
15245         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15246         #78775.
15247
15248 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15249
15250         * mini.c: Fix solaris/x86 exception handling.
15251
15252         * Makefile.am: Get rid of $(ICU_LIBS).
15253
15254 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15255
15256         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15257         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15258         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15259
15260         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15261
15262         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15263         this function causes a SIGSEGV.
15264
15265 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15266
15267         * mini.c: Remove unused solaris/x86 includes.
15268
15269 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15272
15273 2006-06-20  Jb Evain  <jbevain@gmail.com>
15274
15275         * cpu-g4.md: fix max length of start_handler instruction.
15276
15277 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15278         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15279
15280 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15281         * ssa.c: Fixed bug 78653 for SSA based deadce.
15282         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15283         MonoInst.flags, used in SSA based deadce.
15284         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15285         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15286
15287 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15288
15289         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15290         it can end up using non executable memory on ppc64 systems
15291         running ppc32 userspace (fix from Johannes Berg).
15292
15293 2006-06-14  Dick Porter  <dick@ximian.com>
15294
15295         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15296         4.1.1
15297
15298 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15299         * mini.c: Made so that inline is locally disabled if it would
15300         trigger a .cctor, because too many apps depend on this behavior
15301         (which seems to be also the one of the MS CLR).
15302
15303 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15304
15305         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15306         No idea why this worked before.
15307
15308         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15309         which branch to outer exception clauses since they could skip the
15310         inner finally clauses. Fixes #78633.
15311
15312         * exceptions.cs: Add a test for the above.
15313
15314         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15315         Fixes #78629.
15316
15317         * iltests.il: Add a test for the above.
15318
15319 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15322         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15323
15324         * iltests.il: Add a test for the above.
15325
15326 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15327
15328         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15329         
15330         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15331         methods as instrinsics.
15332
15333 2006-06-09  Wade Berrier <wberrier@novell.com>
15334
15335         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15336         (simple-cee-ops.h ssapre-mini-ops.h)
15337
15338 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15339
15340         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15341         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15342         instruction).
15343         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15344         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15345
15346 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15347
15348         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15349
15350 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15351
15352         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15353         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15354         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15355         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15356         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15357         of opcodes, so that bug 78549 should not happen again.
15358         * ssapre.c: Updated to use the renamed files.
15359
15360 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15361
15362         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15363         in OP_ATOMIC_EXCHANGE_I4.
15364
15365 2006-06-07  Wade Berrier <wberrier@novell.com>
15366
15367         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15368         in mono_debugger_create_notification_function)
15369
15370 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15371
15372         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15373         
15374         * mini.c (type_from_stack_type): Disable some changes which do not
15375         seem to work.
15376
15377         * driver.c: Reenable opts.
15378
15379         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15380         of the evaluation stack.
15381         
15382         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15383         evaluation stack trace at entry to the bblock.
15384
15385         * mini.c (merge_stacks): New function to perform verification of stack merges.
15386         Turned off by default.
15387
15388         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15389         STACK_MP.
15390         
15391 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15392
15393         * local-propagation.c: Fixed bug 78549.
15394
15395 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15396
15397         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15398
15399 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15400
15401         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15402         tramp-arm.c, tramp-ia64.c
15403         (mono_debugger_create_notification_function): Update signature to
15404         new signature and use new protocol for creating the notification
15405         function.  
15406
15407         Should fix the build.
15408
15409 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15410
15411         * exceptions-ppc.c (mono_jit_walk_stack)
15412         (ves_icall_get_frame_info): Fix the build
15413
15414 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15417
15418 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15419
15420         * il2tests.2.il: New file for generics CIL tests.  Add test for
15421         #78019.
15422         * Makefile.am: Update.
15423
15424         Fix #78019
15425         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15426         to nullable types.
15427
15428 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15429
15430         * aliasing.c: Fixed bug 78311.
15431
15432 2006-05-29  Martin Baulig  <martin@ximian.com>
15433
15434         * mini-exceptions.c (mono_find_jit_info): When computing the
15435         native offset, check whether we're actually inside the method's
15436         code; call mono_debug_print_stack_frame() to format the frame.
15437         (ves_icall_System_Exception_get_trace): Call
15438         mono_debug_print_stack_frame() to format the stack frame.
15439         (ves_icall_get_trace): Update to the new debugging API.
15440         (mono_jit_walk_stack_from_ctx): Likewise.
15441         (ves_icall_get_frame_info): Likewise.
15442
15443         * mini.c (get_method_from_ip): Use the new debugging API.
15444         (mono_print_method_from_ip): Likewise.
15445
15446         * exceptions-ppc.c
15447         (mono_jit_walk_stack): Use the new debugging API.
15448         (ves_icall_get_frame_info): Likewise.   
15449
15450 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15453
15454 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15455
15456         * mini.c: Added "limitator" to inline for debugging.
15457
15458 2006-05-24  Martin Baulig  <martin@ximian.com>
15459
15460         * debug-debugger.c (mono_debugger_init): Create a private,
15461         malloc()-based code manager for the notification function and
15462         intentionally leak it on exit.  This fixes the crash-on-exit race
15463         condition.
15464
15465         * tramp-amd64.c
15466         (mono_debugger_create_notification_function): Added
15467         `MonoCodeManager *' argument.
15468
15469         * tramp-x86.c
15470         (mono_debugger_create_notification_function): Added
15471         `MonoCodeManager *' argument.
15472
15473 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15474
15475         * aliasing.c: Fixed 64 bit issue.
15476         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15477         default since all known bugs are fixed (one more time!).
15478
15479 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15480
15481         * mini.c: write barrier support.
15482
15483 2006-05-23  Martin Baulig  <martin@ximian.com>
15484
15485         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15486         check at the top of the file.
15487
15488 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15489
15490         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15491         reverting changes without reason and without changelog entries.
15492
15493 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15494
15495         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15496         to a few opcodes. Fixes #78439.
15497
15498         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15499         consistency with other archs.
15500
15501         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15502
15503 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15504
15505         * debug-debugger.c: fix the build.
15506
15507 2006-05-17  Martin Baulig  <martin@ximian.com>
15508
15509         * debug-debugger.c
15510         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15511         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15512         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15513         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15514
15515 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15516
15517         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15518
15519 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15522         MONO_TYPE_GENERICINST.
15523         
15524         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15525         MONO_TYPE_GENERICINST.
15526
15527 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15528
15529         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15530         #78325.
15531
15532 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15533
15534         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15535         mempool.
15536         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15537
15538 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15539
15540         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15541         mono_trace_cleanup ().
15542
15543         * iltests.il: Fix problem with the newly added test.
15544
15545         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15546         due to register constraints, free up the previous hreg. Fixes #78314.
15547
15548         * iltests.il: Add new test for #78314.  
15549
15550         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15551         Interlocked.Add. Fixes #78312.
15552
15553         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15554         
15555 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15556
15557         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15558
15559 2006-05-05  Martin Baulig  <martin@ximian.com>
15560
15561         * debug-mini.c (mono_debug_open_block): New method.
15562
15563         * mini-amd64.c
15564         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15565         the beginning of each basic block.
15566
15567         * mini-x86.c
15568         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15569         the beginning of each basic block.
15570
15571 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15572
15573         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15574         default until I understand why they break the build on amd64.
15575
15576 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15577
15578         * mini.c (mini_cleanup): Call mono_cleanup ().
15579
15580         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15581         errors.
15582
15583 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15584
15585         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15586         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15587         default since all known bugs are fixed, and I cannot reproduce bug
15588         77944... I'm asking Matt Hargett to test again after this commit.
15589
15590 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15591
15592         * mini-codegen.c: Fixed typo that thrashed inline.
15593
15594 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15595
15596         * dominators.c (compute_dominators): Avoid using a worklist since
15597         it is not correct in some cases. Instead, iterate over all bblocks as
15598         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15599
15600 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15601
15602         * mini.c (mono_jit_compile_method_inner): Use
15603         mono_prepare_exception_from_error that resets the value
15604         internally.
15605
15606 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15607
15608         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15609         
15610 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15611
15612         * aliasing.c: Fixed bug 78210.
15613
15614 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15615
15616         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15617         default until all their problems (or the ones they trigger) are fixed.
15618
15619 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15620
15621         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15622         
15623         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15624         as loaded only after resolving patches since that could invoke the same method.
15625
15626         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15627
15628         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15629         functions.
15630
15631         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15632         AOT loader.
15633
15634         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15635         stack.
15636
15637         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15638         made from AOT code through the PLT table.
15639
15640         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15641         holding the plt offset when a call is made to the aot plt trampoline.
15642         
15643 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15644
15645         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15646         amd64 AOT support.
15647
15648         * Makefile.am (common_sources): Fix build breakage.
15649
15650         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15651         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15652         intra-assembly calls if possible.
15653         
15654         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15655
15656         * mini-trampolines.c: Handle PLT entries.
15657
15658         * mini.c: Avoid creating a GOT var for calls.
15659
15660         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15661         from mscorlib code.
15662
15663         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15664         from mscorlib code.
15665
15666         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15667         AOT code.       
15668
15669         * mini.h: Bump AOT file format version.
15670         
15671         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15672         covers more cases.
15673
15674 2006-04-25  Martin Baulig  <martin@ximian.com>
15675
15676         * driver.c: Disable copyprop, consprop and inline when running
15677         inside the debugger.
15678
15679 2006-04-25  Martin Baulig  <martin@ximian.com>
15680
15681         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15682         with `get_current_thread' and added `detach'.
15683         (MonoDebuggerMetadataInfo): Added `thread_size',
15684         `thread_tid_offset', `thread_stack_ptr_offset' and
15685         `thread_end_stack_offset'.
15686
15687 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15690         aot-runtime.c.
15691
15692         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15693         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15694
15695         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15696
15697         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15698
15699         * aot.c: Add support for ADJUSTED_IID.  
15700
15701 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * aot.c (emit_method_order): Don't align method_order_end.
15704
15705         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15706         the interface ID changes.
15707
15708 2006-04-21  Dick Porter  <dick@ximian.com>
15709
15710         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15711         cleaning up a thread.  Fixes the new part of bug 77470.
15712
15713 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15714
15715         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15716         to managed wrapper.
15717                      
15718 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15721         
15722         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15723         SIGSEGV. Fixes #78072.
15724
15725         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15726         unregister our SIGABRT handler.
15727
15728 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15729
15730         * mini.c: Disabled inline where it can alter the call stack in a
15731         way visible from managed code.
15732         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15733         default.
15734
15735 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15738         on other platforms. Fixes #78089.
15739
15740 2006-04-13  Martin Baulig  <martin@ximian.com>
15741
15742         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15743         determine whether we're inside the debugger.
15744
15745         * debug-debugger.h
15746         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15747
15748 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15749
15750         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15751         handler clauses. Fixes #78024.
15752
15753         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15754         in the CALL_MEMBASE opcodes. Fixes #78088.
15755         (mono_arch_get_vcall_slot_addr): Ditto.
15756
15757 2006-04-10  Martin Baulig  <martin@ximian.com>
15758
15759         * debug-debugger.c: The thread handling code has now been moved
15760         into ../metadata/threads.c.
15761
15762 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15763
15764         * driver.c (mono_main): Fix --with-gc=none build.
15765
15766         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15767         (mono_spillvar_offset_float): Ditto.
15768         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15769         hreg, not when its !global, since on ia64, there is a third category: stacked
15770         registers.      
15771
15772 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15773
15774         * mini.c: set MonoInst->klass for load field address and a few other
15775         places.
15776
15777 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15778
15779         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15780
15781 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15782
15783         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15784         the branch opt changes.
15785
15786 2006-04-06  Dick Porter  <dick@ximian.com>
15787
15788         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15789         
15790         * wapihandles.c (mini_wapi_seminfo): 
15791         * driver.c (mono_main): Add semaphore info option
15792
15793 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15796         branch optimization changes. Fixes #78009.
15797
15798 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15799
15800         * mini.c: ignore accessibility of methods in managed->native wrappers.
15801
15802 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15803
15804         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15805         
15806         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15807
15808 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * mini.c: Modify the branch optimizations to preserve the invariant that
15811         the entries inside the in_bb and out_bb arrays are unique.
15812         (mono_unlink_bblock): Avoid creation of new arrays.
15813
15814 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15815
15816         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15817         change (#77992).
15818
15819 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15820
15821         * mini.c (optimize_branches): Remove the "optimizations" in
15822         the cbranch1/cbranch2 -> branch cases which were causing several
15823         problems in the past. Fixes #77986.
15824
15825 2006-03-31  Chris Toshok  <toshok@ximian.com>
15826
15827         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15828         default optimizations :(
15829
15830 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15833         branch.
15834
15835 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15836
15837         * local-propagation.c: Added comments to structs and removed
15838         "Mono" prefixes from local tree mover types.
15839
15840 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15841
15842         * Makefile.am (arch_sources): Define this for each architecture so 
15843         libmono_la_SOURCES is defined in one place.
15844
15845 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15846
15847         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15848         from handles/.
15849
15850 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15851
15852         * driver.c: print the GC name supplied by configure.
15853
15854 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15855
15856         * local-propagation.c: Added tree mover, and moved here all the
15857         local propagation code from mini.c
15858         * mini.c: Added support for treeprop, and moved all the local
15859         propagation code to local-propagation.c
15860         * mini.h: Added support for treeprop
15861         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15862         treeprop, inline and deadce by default
15863         * Makefile.am: Added local-propagation.c
15864
15865 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15868
15869 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15870
15871         * debug-debugger.c: make it compile without the Boehm GC.
15872
15873 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15874
15875         * mini.c: fixed issue with mismatch when an icall is registered
15876         with multiple names but same address.
15877
15878 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15879
15880         * declsec.c, mini-exceptions.c: use write barrier to set reference
15881         fields of managed objects.
15882
15883 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15884
15885         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15886         (can_access_internals): Fix a warning.
15887
15888         * mini.c (print_method_from_ip): Rename this to 
15889         mono_print_method_from_ip so it gets exported.
15890
15891         * trace.c: Deal with strings inside StringBuilder's containing garbage
15892         and fix memory leaks. Fixes #77848.
15893
15894 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15895
15896         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15897         fixes #77787.
15898
15899 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15900         
15901         * mini-s390.c: Remove OP_X86_TEST_NULL.
15902
15903 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15904
15905         * mini.c: use the correct GetHashCode() for the moving collector.
15906
15907 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15908
15909         * liveness.c: Regalloc spill cost tuning.
15910
15911 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15912         
15913         * mini-s390x.h: Correct S390_LONG macro.
15914
15915         * mini-s390x.c: Cleanup unused code.
15916
15917 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * jit-icalls.h: New file.
15920
15921         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15922         icalls and include that instead of including jit-icalls.c.
15923
15924         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15925         OP_X86 opcodes.
15926
15927 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15928
15929         * mini.c: when checking for member accessibility, also check for
15930         friend assemblies and for explicit interface implementations.
15931
15932 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15933
15934         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15935
15936         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15937
15938         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15939         common cases are done first.    
15940
15941         * mini-ops.h: Only define platform specific opcodes on the given platform.
15942
15943         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15944         branch.
15945         
15946 2006-03-14  Martin Baulig  <martin@ximian.com>
15947
15948         Revert Paolo's change from r57348:
15949
15950         * mini.h: don't use gboolean for bitfields.
15951         * mini.c: verifier changes for fields and methods accessibility.
15952
15953 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15954
15955         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15956
15957         * mini-s390x.c: Fix conv_r_un.
15958
15959         * cpu-s390, cpu-s390x.md: Fix lengths.
15960
15961 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini.c: nested types have access to all the nesting
15964         levels, not just the enclosing types.
15965
15966 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15967
15968         * mini.c: added a few more verification checks.
15969
15970 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15971
15972         * liveness.c: Merge optimizations from the linear-il branch.
15973
15974 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * mini-ia64.c (emit_call): Add a comment.
15977
15978         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15979
15980         * tramp-ia64.c: Fix some warnings.
15981
15982 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15983
15984         * mini.h: don't use gboolean for bitfields.
15985         * mini.c: verifier changes for fields and methods accessibility.
15986
15987 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15988
15989         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15990         lazy icall wrapper changes.
15991
15992         * dominators.c: Replace all the dominator algorithms with faster
15993         ones from the linear-il branch.
15994
15995         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15996         the mempool.
15997
15998         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15999         common cases are done first.
16000
16001         * mini-amd64.c: Fix some warnings.
16002
16003         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16004         from the mempool.
16005
16006         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16007         added code.
16008
16009         * mini.h: Add a missing prototype.
16010
16011 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16012
16013         * mini.c: Compile icall wrappers lazily.
16014
16015         * mini-codegen.c: Use printf instead of g_print since its much faster.
16016
16017         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16018         function.
16019
16020         * mini.c (optimize_branches): Cache the negative result from 
16021         remove_block_if_useless ().
16022
16023         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16024         Also fix some bblock linking issues.
16025
16026         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16027         assembly files.
16028
16029         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16030
16031         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16032         accessed fields first, for better cache behavior.
16033         
16034 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16035
16036         * mini.c: speedup IList<T> array accesses.
16037
16038 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16039
16040         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16041         inline_costs counter. Fixes #77190.
16042
16043 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16044
16045         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16046         trace messages. Fixes #77706.
16047
16048 2006-03-04  Martin Baulig  <martin@ximian.com>
16049
16050         * tramp-amd64.c, tramp-x86.c
16051         (mono_debugger_create_notification_function): Use
16052         mono_global_codeman_reserve() to allocate a buffer at runtime and
16053         return it.
16054
16055         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16056
16057         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16058         notification function at runtime and then call `initialize' in the
16059         `MONO_DEBUGGER__debugger_info' vtable.
16060
16061 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * iltests.il: Fix a visibility problem.
16064
16065 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16066
16067         * driver.c, mini.c: add hooks for the counters API.
16068
16069 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16070
16071         * driver.c: show disabled options.
16072
16073 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16074
16075         * linear-scan.c: always use cost-driven selection.
16076
16077 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16078
16079         * jit-icalls.c (helper_compile_generic_method): Revert change from
16080         2006-02-24.
16081
16082 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16083
16084         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16085
16086 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16087
16088         * inssel.brg: style fixes, mostly to force the updated monoburg
16089         to run for people using svn.
16090
16091 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16092
16093         * mini.c: match monoburg changes.
16094
16095 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16096
16097         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16098         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16099         declaration in the header file.
16100
16101 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16102
16103         * helpers.c: reduce relocations and mem usage.
16104
16105 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16106
16107         * mini.h, mini-codegen.c: disable logging features if
16108         requested by configure.
16109
16110 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini.c: tiny verifier changes.
16113
16114 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16115
16116         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16117         cpu-pentium.md: stack alignment changes for osx/x86,
16118         partially from Geoff Norton <gnorton@customerdna.com>.
16119
16120 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16121
16122         * jit-icalls.c (helper_compile_generic_method): Update to changes
16123         in metadata/class.c.
16124
16125 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16126         
16127         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16128         
16129         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16130         interface calls with large offsets.
16131
16132 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16133
16134         * jit-icalls.c (helper_compile_generic_method): Document the
16135         special-case we depend on so that we can inflate the method twice
16136         with the same context with no bad side-effects.
16137
16138 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16139
16140         * mini-x86.c, mini-amd64.c: fix for case when xen support
16141         is disabled.
16142
16143 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini-x86.c, mini-amd64.c: generate code to access tls items
16146         in a faster way for Xen systems.
16147
16148 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16149
16150         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16151         updates and compilation fixes for the OSX/x86 port, mostly from
16152         Geoff Norton <gnorton@customerdna.com>.
16153
16154 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16155
16156         * inssel.brg: faster interface call implementation
16157         to sync with the interface_offsets MonoVTable changes.
16158
16159 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16160
16161         * mini.c: more verification checks.
16162
16163 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini.c: added a few more verification checks.
16166
16167 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16168
16169         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16170         facility on the processor and use it if available.
16171
16172 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16173
16174         * driver.c, aot.c, mini.c: throw exception if the IL code is
16175         invalid or unverifiable.
16176
16177 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16178
16179         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16180         m.StructField.
16181
16182 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16185
16186 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16187
16188         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16189         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16190         handling of instantiated generic valuetypes.
16191
16192 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16193
16194         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16195         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16196         instead.
16197
16198         * generics.2.cs: Revert the nullable reftypes tests.
16199
16200 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16201
16202         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16203         using __builtin_frame_address (1) as it doesn't work in the presence
16204         of optimizations. Hopefully fixes #77273.
16205
16206         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16207         -> generics.cs change as it doesn't work with some automake versions.
16208
16209 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16210
16211         * mini.c: handle systems that sue a different way to
16212         retrieve the stack address of the current thread.
16213
16214 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16215
16216         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16217         it specially in the makefile.
16218
16219         * generics.2.cs: Add tests for nullable reference types.
16220
16221 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16222
16223         * mini.c: always handle the case when mono_jit_init()
16224         is called in a thread different from the main thread,
16225         confusing libgc (bug #77309).
16226
16227 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16228
16229         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16230
16231 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16232
16233         * mini.c: change optimize_branches () to use a single loop
16234         and introduce a new optimization to simplify some range checks.
16235
16236 2006-02-03  Martin Baulig  <martin@ximian.com>
16237
16238         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16239         and merged with debugger_thread_manager_add_thread().
16240         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16241         inform the debugger about the main thread.
16242
16243 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16244
16245         * basic.cs: Add test for div.un/rem.un constant folding.
16246
16247 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16248
16249         * cpu-s390x.md: correct int_xor_imm length
16250
16251 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16252
16253         * generics.2.cs: New test for #77442.
16254
16255         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16256         #77442.
16257
16258 2006-02-02  Martin Baulig  <martin@ximian.com>
16259
16260         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16261         <mono/metadata/mono-debug-debugger.h>   
16262
16263         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16264
16265 2006-02-02  Martin Baulig  <martin@ximian.com>
16266
16267         * debug-debugger.h: New header file for debug-debugger.c.
16268
16269         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16270         function is a separate thread anymore; add support for attaching.
16271
16272 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16273
16274         * tramp-x86.c: Fix a warning.
16275
16276 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16277
16278         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16279         on very large methods.
16280
16281         * aot.c (load_patch_info): Fix a warning.
16282
16283 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16284
16285         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16286         mini-ops.h: alu membase optimizations.
16287
16288 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16289
16290         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16291         to speedup StringBuilder.
16292
16293 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16294
16295         * dominators.c (mono_compute_natural_loops): Fix detection of
16296         loop body start blocks.
16297
16298         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16299
16300 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16301
16302         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16303         #75145.
16304
16305 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16306
16307         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16308
16309 2006-01-25  Martin Baulig  <martin@ximian.com>
16310
16311         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16312         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16313         started to cleanup this file a little bit.
16314
16315 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16316
16317         * mini.c: optimize a codepath frequently happening in generics code.
16318
16319 2006-01-23  Martin Baulig  <martin@ximian.com>
16320
16321         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16322
16323         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16324         functions directly.
16325
16326         * driver.c: debug-debugger.c is only available if
16327         `MONO_DEBUGGER_SUPPORTED' is defined.   
16328
16329 2006-01-23  Martin Baulig  <martin@ximian.com>
16330
16331         * debug-debugger.c: Only enable this on platforms where the Mono
16332         Debugger is working (x86 and x86_64).
16333
16334 2006-01-21  Martin Baulig  <martin@ximian.com>
16335
16336         The Mono Debugger is now using the normal `mono' instead of the
16337         `mono-debugger-mini-wrapper' when executing managed code.
16338
16339         * debug-debugger.c: New file; previously known as
16340         debugger/wrapper/wrapper.c.
16341
16342         * debug-mini.c (mono_init_debugger): Removed.
16343
16344         * driver.c (mono_main): Added new `--inside-mdb' command line
16345         argument which is used when running inside the debugger.
16346
16347 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16348
16349         * liveness.c (mono_analyze_liveness): Remove some unused data
16350         structures.
16351
16352 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16353
16354         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16355
16356 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16357
16358         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16359         depends on implementation details of monobitset.
16360
16361         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16362         Fixes #77271.
16363
16364 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16365
16366         * liveness.c: Update after monobitset changes.
16367
16368 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16369
16370         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16371
16372 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16373
16374         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16375
16376         * mini-s390x.c: Remove warning messages.
16377
16378 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16379
16380         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16381
16382 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16383
16384         * generics.2.cs: Add ldelem/stelem_any test.
16385
16386 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16387
16388         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16389
16390 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16391
16392         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16393         
16394 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16395
16396         * generics.2.cs: Reenable vtype tests.
16397
16398         * inssel-x86.brg: Remove an icorrect valuetype rule.
16399
16400 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16401
16402         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16403         initial support for OP_ABS.
16404
16405 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16406
16407         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16408
16409 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16410
16411         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16412         conversion and implement LADD/LSUB.
16413
16414         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16415         architectures.
16416
16417 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16418
16419         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16420
16421         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16422         architectures.
16423
16424 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16425
16426         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16427         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16428         (stack walk problem).
16429
16430 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * aot.c (mono_aot_load_method): Fix a warning.
16433
16434 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16435
16436         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16437
16438 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16439
16440         * iltests.il: Add test for #77148.
16441
16442         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16443         #77148.
16444
16445 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16446
16447         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16448
16449 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16450
16451         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16452         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16453
16454         * basic-long.cs: Add lconv-to-r4/r8 tests.
16455
16456 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16457
16458         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16459
16460         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16461         here as on other archs.
16462
16463 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16464
16465         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16466
16467 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16468
16469         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16470         
16471         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16472
16473         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16474         instrument_prolog; Add memory_barrier instruction.
16475
16476 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16477
16478         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16479
16480 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16481
16482         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16483
16484         * aliasing.c inssel.brg: Fix warnings.
16485
16486         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16487         could skip initialization of some parts of memory.
16488
16489         * mini.c mini-ia64.c: Fix warnings.
16490
16491         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16492
16493 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16494
16495         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16496         a crash seen on sparc.
16497
16498         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16499         
16500         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16501
16502 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16503
16504         * mini-ops.h: Add s390_backchain instruction
16505
16506         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16507
16508         * cpu-s390.md: Add s390_backchain instruction
16509
16510         * mini-s390.c: Significant ABI changes
16511
16512         * mini-s390.h: Cater for zero length structures
16513
16514 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16515
16516         * mini-s390.c: ABI fixes
16517
16518         * inssel-s390.brg: Remove debug statements
16519
16520         * cpu-s390.md: Fix length of ATOMIC_xx operations
16521
16522 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16523
16524         * basic-float.cs: Add float<->long conversion tests.
16525
16526 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16527
16528         * mini-s390.c: Fix LOCALLOC processing.
16529
16530         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16531
16532 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16533
16534         * iltests.il: Add tests for some opcodes not covered by the other
16535         tests.
16536
16537 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16538
16539         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16540         register loading for Tail processing; Correct trace output.
16541
16542         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16543
16544         * cpu-s390.md: Correct size of jmp instruction. 
16545
16546 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16547
16548         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16549
16550 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16551
16552         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16553           Bring s390 up to current level.
16554
16555 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16556
16557         * generics.2.cs: Disable the newly added tests as they do not work yet.
16558         
16559         * generics.2.cs: Add valuetype tests.
16560
16561 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16562
16563         * basic-long.cs: Add i4->u8 test.
16564
16565         * objects.cs: Add tests for JIT intrinsic.
16566
16567         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16568         optimizations lost by a mistake.
16569
16570 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16571
16572         * basic-long.cs: Remove a test moved to objects.cs.
16573
16574         * arrays.cs: Add more array tests.
16575
16576 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16577
16578         * arrays.cs: Add new tests for multi-dimensional arrays.
16579
16580 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16581
16582         * Makefile.am (test_sources2): Add generics.2.cs.
16583         (EXTRA_DIST): Add test_sources2.
16584
16585 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16586
16587         Support for boxing and unboxing nullable types as well as the
16588         isinst operation on nullables, per the CLI ammendment.
16589
16590         * inssel.brg (CEE_ISINST): Special case for nullable
16591
16592         * mini.c (handle_unbox_nullable): new method
16593         (handle_box): Special case for nullable types
16594         (mono_method_to_ir): Call handle_unbox_nullable in correct
16595         places.
16596
16597         * generics.2.cs: New test suite
16598
16599         * Makefile.am: Support for regression tests with generics.
16600
16601 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16602
16603         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16604         allocated to registers. Fixes #76800.
16605
16606 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16607
16608         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16609
16610 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16611
16612         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16613         of platforms.
16614
16615 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16618         objects.cs.
16619
16620         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16621         
16622         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16623 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16624
16625         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16626         single precision before storing to a single precision location.
16627
16628 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16629
16630         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16631
16632 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16633
16634         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16635         correct files.
16636
16637         * basic.cs: Remove test_0_byte_compares test which was moved to
16638         objects.cs a long time ago.
16639
16640 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16641
16642         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16643
16644 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16645
16646         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16647         handlers are called.
16648
16649         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16650         throwing code.
16651
16652          * mini-ia64.c: Add support for the throw->branch exception 
16653         optimization.   
16654
16655         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16656
16657 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16658
16659         * mini.c: Enabled "fastpath" deadce :-)
16660         
16661 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16662
16663         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16664         alias analysis pass to support it.
16665         * mini.h: Likewise.
16666         * ssa.c: Likewise.
16667         * liveness.c: Likewise (liveness computation can use aliasing
16668         information to be more accurate).
16669         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16670         moreover made so that "--compile-all" uses the given optimization
16671         flags and not the default ones.
16672         * aliasing.c: Alias analysis (new file).
16673         * aliasing.h: Likewise.
16674         * Makefile.am: added "aliasing.c" and "aliasing.h".
16675         
16676 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16677
16678         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16679         OP_L opcodes.
16680
16681 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16682
16683         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16684         fp >= end_of_stack exit condition, as it is not needed, and it might
16685         become true for fp eliminated frames.
16686
16687 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16688
16689         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16690         coded offsets.
16691
16692 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16693
16694         * mini-arm.c: fixed alignment of doubles/longs to match
16695         the C ABI (bug #76635).
16696
16697 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16698
16699         * aot.c: fix compilation with --enable-minimal=aot.
16700
16701 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16702
16703         * mini-arm.c: fixed compatibility with the new
16704         floating point emulator package for compares.
16705
16706 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16707
16708         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16709
16710 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16711
16712         * mini-exceptions.c (print_stack_frame): Output to stderr.
16713         (mono_handle_native_sigsegv): Ditto.
16714
16715 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16716
16717         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16718         OP_LCONV_TO_OVF_I implementation.
16719
16720         * mini-amd64.c: Add support for the throw->branch exception 
16721         optimization.
16722
16723         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16724         when the catch clause catches a more general exception, i.e. Object.
16725
16726 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * cpu-ia64.md: Remove unused opcodes.
16729
16730         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16731         specific defines for architectures defining USE_SIGACTION.
16732
16733         * mini-ia64.c: Fix some warnings.
16734
16735         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16736         version seemed to skip a frame.
16737
16738 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16739
16740         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16741         only calls which are made to native code use this flag.
16742
16743 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16744
16745         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16746         varargs methods as well.
16747         
16748         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16749         which have save_lmf set. Reorganize methods prologs a bit.
16750
16751         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16752         debugger to the proper place.
16753
16754 2005-10-29  Martin Baulig  <martin@ximian.com>
16755
16756         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16757         when running inside the debugger until the debugger has support
16758         for it.
16759
16760 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16761
16762         * mini.h: Fix a warning.
16763
16764 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16765
16766         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16767         we expose publicly, this returns the string.
16768
16769 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16770
16771         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16772         with fp elimination.
16773
16774 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16777         native stacktrace using the glibc 'backtrace' function if available.
16778
16779 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16782
16783         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16784         handle SIGSEGVs received while in native code.
16785
16786         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16787         code, call mono_handle_native_sigsegv which will abort the runtime
16788         after printing some diagnostics, instead of converting it into a
16789         confusing NullReferenceException.
16790
16791 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16792
16793         * cpu-pentium.md: Remove unused opcodes.
16794
16795 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16796
16797         * mini-amd64.h (MonoLMF): Add rsp field.
16798
16799         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16800         the lmf too.
16801
16802 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini-codegen.c (get_register_spilling): Fix some warnings.
16805
16806 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16807
16808         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16809         elimination during exception handling. Enable fp elimination by
16810         default.
16811
16812         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16813         elimination.
16814
16815 2005-10-16  Martin Baulig  <martin@ximian.com>
16816
16817         * mini-exceptions.c
16818         (mono_debugger_run_finally): New public method for the debugger.
16819
16820 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16821
16822         * debug-mini.c (mono_debug_init_method): Fix warning.
16823
16824         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16825         the 'exname' parameter const to fix some warnings.
16826
16827 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16828
16829         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16830         introduced by the previous patch.
16831
16832 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16833
16834         * basic-float.cs: Add test for precision of float arithmetic.
16835
16836         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16837         when loading/storing single values from/to memory.
16838
16839         * mini.c (mono_jit_compile_method_with_opt): Create the function
16840         pointers in the correct domain.
16841
16842 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16843
16844         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16845         introduced by previous patch.
16846         
16847         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16848         when out_filter_idx is NULL.
16849
16850         * mini-exceptions.c: Don't run filter clauses twice during exception
16851         handling. Fixes #75755.
16852
16853 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * aot.c: Add support for ldflda wrappers.
16856
16857         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16858         #75902.
16859
16860 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16861
16862         * mini.c, mini.h: do not consider exception handlers blocks when
16863         setting up interface variables.
16864
16865 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16866
16867         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16868
16869 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16870
16871         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16872         causes a regression.
16873
16874         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16875
16876 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16877
16878         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16879         of the OP_P definitions.
16880
16881         * TODO: Add a proposal for dealing with the CEE/OP mess.
16882
16883         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16884         optimizations from the x86 port.
16885
16886         * cpu-amd64.md: Ditto.
16887
16888         * basic.cs basic-long.cs: Add tests.
16889
16890 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16891
16892         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16893         Patrik Torstensson's implementation of my exception-handling
16894         optimization idea, when the exception object is not used
16895         (bug #62150).
16896
16897 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16898
16899         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16900         of the mul_imm optimizations from the old jit.
16901
16902 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16903
16904         * mini.c, liveness.c: patch by Patrik Torstensson and
16905         Zoltan Varga to improve performance in methods with
16906         exception clauses.
16907
16908 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16909
16910         * driver.c: Remove 'Globalization' entry from --version.
16911
16912 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16915         there is a profiler interested in JIT events.
16916
16917         * aot.c: Load profile files produced by the AOT profiling module, and
16918         reorder methods based on the profiling info. Add a 'method_order' table
16919         to the AOT file to make mono_aot_find_jit_info work with the reordered
16920         methods.
16921
16922         * mini.h: Bump AOT file version info.
16923
16924 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16925
16926         * mini-arm.h: work around what looks like a gcc bug when optimizations
16927         are enabled.
16928
16929 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16930
16931         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16932         conditionals.  Use ...
16933         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16934
16935 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16936
16937         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16938         to determine the amount of memory to copy when passing valuetypes.
16939
16940         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16941         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16942
16943 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16944
16945         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16946         information about aot.
16947
16948 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16949
16950         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16951         macros. This will allow a deadlock debugger to easily be plugged
16952         in.
16953
16954 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16955
16956         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16957
16958 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16959
16960         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16961         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16962         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16963         ($(arch_built)) [CROSS_COMPILING]: Error out.
16964
16965 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16966
16967         * aot.c: Add support for the no_special_static flag for classes.
16968
16969 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16970
16971         * Reapply reverted patches.
16972
16973         * *: Revert r50174 as well.
16974
16975         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16976
16977 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16978
16979         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16980
16981 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16982
16983         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16984         part of the SIG_HANDLER_SIGNATURE.  
16985
16986 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16987
16988         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16989         statistics.
16990
16991         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16992         introduced by previous patch.
16993
16994 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16995
16996         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16997         saved registers too.
16998
16999         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17000         upon the information returned by get_call_info ().
17001         
17002         * mini-x86.c (add_float): Fix stack size calculation.
17003         (mono_arch_call_opcode): Rewrite this so it works based up the
17004         information returned by get_call_info ().
17005         (mono_arch_get_this_vret_args): Ditto.
17006
17007 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17008
17009         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17010         in cinfo to determine the registers which need to be used.
17011
17012 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17013
17014         * driver.c (mono_main): Add --server and --desktop flags. 
17015
17016 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17017
17018         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17019         registers as global registers.
17020
17021         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17022         longer needed with the new register allocator.
17023
17024         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17025
17026         * cpu-ia64.md: Remove unused opcodes.
17027         
17028         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17029         
17030 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17031
17032         * cpu-amd64.md: Remove unused opcodes.
17033
17034         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17035         needed with the new register allocator.
17036
17037         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17038         reg-reg moves.
17039
17040 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17041
17042         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17043
17044 2005-09-16  Martin Baulig  <martin@ximian.com>
17045
17046         * exceptions-amd64.c
17047         (throw_exception): Don't call mono_debugger_throw_exception() if
17048         we're a rethrow - see the FIXME in the code.
17049
17050 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17051
17052         * mini.c (mono_init_exceptions): This only works on some architectures.
17053         
17054 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17057         on ia64.
17058
17059         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17060
17061         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17062         now in mini-exceptions.c.
17063
17064 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17065
17066         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17067         now in mini-exceptions.c.
17068
17069 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17070
17071         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17072         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17073
17074         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17075         code into mini-exceptions.c. Add some assertions to it.
17076
17077 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17078
17079         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17080         (<software@solmersa.com>). Fix as errors on windows.
17081
17082 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17083
17084         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17085         method info into the LMF.
17086
17087 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17088         
17089         * mini-ia64.c: Add proper unwind info for method epilogs.
17090
17091         * exceptions-ia64.c: Add some code to help debugging.
17092         
17093         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17094
17095         * mini-exceptions.c: Fix warning.
17096
17097 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17098
17099         * mini.c: Really fix build.
17100
17101         * mini-x86.c mini-amd64.c: Fix build.
17102
17103 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17104
17105         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17106
17107         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17108         some Interlocked methods as intrinsics.
17109
17110         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17111         for Thread methods as well.
17112
17113         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17114
17115         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17116
17117         * mini-ia64.c mini-x86.c mini-amd64.c 
17118         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17119         OP_MEMORY_BARRIER.
17120         
17121         * mini.c (mono_init_exceptions): Fix build breakage.
17122
17123 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17126         of instructions. Use the new ia64_unw_op macros for emitting unwind
17127         info.
17128
17129         * mini.c (mono_init_exceptions): Initialize exception handling
17130         related trampolines at startup.
17131
17132 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17133
17134         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17135
17136 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17137
17138         * mini.c: Handle type loading errors gracefully during compilation and
17139         throw the appropriate exception.
17140
17141 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17142
17143         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17144         for the mono binary.
17145
17146 2005-09-09  Martin Baulig  <martin@ximian.com>
17147
17148         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17149         the release.
17150
17151 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17152
17153         * mini-arm.h: use emulation for conv.r.un for the release.
17154
17155 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17156
17157         * mini-arm.c, objects.cs: more fixes and tests for them.
17158
17159 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17160
17161         * mini-arm.c: align structures to at least 4 bytes to be able
17162         to keep our current optimized memcpy.
17163
17164 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17165
17166         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17167
17168 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17169
17170         * mini.c: ignore SIGPIPE.
17171
17172 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17175
17176         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17177
17178 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17181
17182 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17183
17184         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17185         exception handling support.
17186         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17187         patch by Brian Koropoff <briank@marakicorp.com>).
17188
17189 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17190
17191         * mini.c: revert another 'optimization' which breaks when
17192         items on the eval stack need to be saved at a basic block end
17193         (bug #75940).
17194
17195 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17196
17197         * jit-icalls.c: for arrays, ensure we always provide
17198         lower bounds.
17199
17200 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17201
17202         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17203         
17204         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17205
17206 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17207
17208         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17209         arguments in their original register.
17210
17211 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17212
17213         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17214         memset/memcpy.
17215
17216         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17217         when ssapre is enabled.
17218
17219         * inssel-long.brg: Fix bug in previous patch.
17220
17221         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17222         multiplication by a constant.
17223
17224 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17225
17226         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17227         icc.
17228
17229         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17230         saving registers.
17231
17232 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17233
17234         * inssel-arm.brg: apply changes tested by Brian Koropoff
17235         <briank@marakicorp.com>.
17236
17237 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17238
17239         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17240         
17241 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17244         to the same register if dreg is just a base register.
17245         (print_ins): Improve printing of membase opcodes.
17246
17247         * inssel-x86.brg: Add optimized ldind(reg) rules.
17248
17249         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17250
17251 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17252
17253         * mini.c: when running under valgrind, set the stack bottom for
17254         the GC at the actual approximate stack for the app (fixes running
17255         mono with valgrind).
17256
17257 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17258
17259         * mini.c: do no break at the first valuetype to init found
17260         (fixes bug #75791).
17261
17262 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17263
17264         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17265
17266 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17267
17268         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17269
17270 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17271
17272         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17273
17274 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17275
17276         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17277
17278         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17279         code.
17280
17281         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17282         code.
17283
17284         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17285         methods.
17286
17287 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17288
17289         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17290
17291 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17292
17293         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17294         in the tail recursion optimization.
17295
17296         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17297         debug info into the assembly file.
17298
17299         * iltests.il: Add test for filter regions.
17300
17301         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17302         initial stack of filter regions. Fixes #75755.
17303
17304 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17305
17306         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17307         stack requirements.
17308
17309 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17310
17311         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17312         the check for an already compiled method on non-ia64 platforms.
17313         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17314         proper domain.
17315
17316         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17317
17318         * inssel-x86.brg: Add some optimized call rules.
17319
17320 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17321
17322         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17323         method here.
17324
17325         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17326         mono_arch_patch_delegate_trampoline.
17327
17328         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17329
17330         * mini-trampolines.c: Fix build.
17331
17332         * mini-amd64.h: Add delegate trampolines.
17333
17334         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17335
17336         * inssel-amd64.brg: Add optimized call rules.
17337         
17338         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17339
17340         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17341
17342 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17343
17344         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17345         change.
17346
17347         * mini-ia64.c: Remove LMF fixmes.
17348
17349         * mini-ia64.h: Remove most fields from LMF.
17350
17351         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17352
17353         * mini-trampolines.c: Add support for IA64 function descriptors.
17354
17355         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17356         for IA64 function descriptors.
17357
17358 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17359
17360         * tramp-arm.c: patch the vtable for virtual calls. Added
17361         support code to register/unregister the LMF.
17362         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17363         more LMF work.
17364
17365 2005-08-19  Dick Porter  <dick@ximian.com>
17366
17367         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17368         bit value if needed.
17369
17370 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17371
17372         * mini.c (mini_get_method): Move handling of wrapper data here.
17373
17374         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17375
17376         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17377         virtual.
17378
17379         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17380         bblock->code does not remain empty.
17381
17382 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17383
17384         * arrays.cs: Add regression test for #75832.
17385
17386         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17387         rules. Fixes #75832.
17388
17389         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17390         instruction scheduling.
17391
17392 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17393
17394         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17395
17396 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17397
17398         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17399
17400         * mini-codegen.c: Fix VC build.
17401
17402         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17403
17404 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17405
17406         * mini.h: fix signature for mono_register_opcode_emulation.
17407
17408 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17409
17410         * mini.c: Get rid of most of the helper_sig_... constants using
17411         mono_create_icall_signature ().
17412
17413 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17414
17415         * jit-icalls.c (helper_ldstr): New helper function.
17416
17417         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17418
17419         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17420         throw, load the string using a helper call instead of creating a string object.
17421
17422         * aot.c: Update after LDSTR changes.
17423
17424         * mini.h: Bump AOT file version.
17425         
17426         * aot.c: Save class size info into the AOT file. Print more statistics during
17427         compilation.
17428
17429         * mini.h: Bump AOT file version.
17430
17431         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17432         ordering of disasm cases. Fixes #74957.
17433
17434 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17435
17436         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17437         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17438         the generic code needed for the ARM port.
17439
17440 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17441
17442         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17443         inssel-arm.brg: more ARM features and fixes.
17444
17445 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17446
17447         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17448         ARM port work in progress.
17449
17450 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17453
17454         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17455
17456         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17457
17458         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17459
17460         * *-ia64.*: Ongoing IA64 work.
17461         
17462         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17463
17464 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17465
17466         * TODO: Remove out-of-data todo stuff.
17467
17468         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17469         dead code.
17470
17471         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17472
17473         * mini.h: Bump corlib version.
17474
17475 2005-07-27  Martin Baulig  <martin@ximian.com>
17476
17477         * mini-codegen.c
17478         (create_copy_ins): Added `const unsigned char *ip' argument; set
17479         `copy->cil_code' from it.
17480
17481 2005-07-27  Martin Baulig  <martin@ximian.com>
17482
17483         * mini-exceptions.c (mono_handle_exception): Don't call
17484         mono_debugger_handle_exception() for filters.
17485
17486 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17487
17488         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17489         as well.
17490
17491 2005-07-26  Martin Baulig  <martin@ximian.com>
17492
17493         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17494
17495         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17496         helper_compile_generic_method() if the method is actually virtual
17497         and non-final.
17498
17499 2005-07-26  Martin Baulig  <martin@ximian.com>
17500
17501         * mini.c
17502         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17503         public; this is now accessed directly by the debugger.
17504         (mono_generic_trampoline_code): Removed.
17505
17506         * debug-mini.c
17507         (mono_debug_init_method): Also add interncalls and wrappers.
17508
17509 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17510
17511         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17512
17513 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17514
17515         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17516
17517 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17520
17521 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17522
17523         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17524         getting TLS offsets on AMD64 too.
17525
17526 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17527
17528         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17529
17530 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17531
17532         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17533         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17534
17535 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17536
17537         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17538
17539         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17540         to mini.c.
17541
17542         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17543         mono_sparc_is_virtual_call ().
17544         
17545         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17546
17547         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17548         trampoline parameters.
17549
17550         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17551         
17552         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17553         to mono_arch_get_vcall_slot_addr.
17554
17555         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17556         trampoline code.
17557
17558         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17559
17560 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17563
17564 2005-07-19  Martin Baulig  <martin@ximian.com>
17565
17566         * exceptions-amd64.c (throw_exception): Call
17567         mono_debugger_throw_exception() here like we're doing it on i386.
17568
17569 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17570
17571         * mini-ia64.c: Add optimized TLS access support.
17572
17573 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * mini-exceptions.c: Ongoing IA64 work.
17576
17577         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17578
17579         * mini.c: Use the default optimization set when embedding. Fixes
17580         #75194.
17581
17582 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17583
17584         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17585         of trampolines to a separate file.
17586
17587         * mini-trampolines.c: New file.
17588
17589         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17590         separate file.
17591         
17592         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17593         amd64/ia64 code.
17594
17595         * mini-codegen.c: Fix cygwin build.
17596
17597 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17598
17599         * mini.c: Add some minor changes needed by the IA64 port.
17600
17601         * *-ia64.*: Ongoing IA64 work.
17602
17603 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17606         trampolines into arch-independent and arch-dependent parts.
17607
17608         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17609
17610 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17611
17612         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17613
17614         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17615         the xp-regalloc-branch for amd64.
17616
17617         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17618         xp-regalloc-branch for x86.
17619
17620 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17621
17622         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17623
17624 2005-07-06  Martin Baulig  <martin@ximian.com>
17625
17626         * mini.c
17627         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17628         (mono_jit_runtime_invoke): Likewise.
17629
17630 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17631
17632         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17633         on x86 too.
17634         
17635         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17636         without loading their metadata. Reorganize the file format so exception handling+
17637         debug info is kept separate from normal method info. Create MonoJitInfo 
17638         structures for methods lazily.
17639
17640         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17641         loading metadata.
17642         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17643
17644         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17645
17646         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17647         in AOT code.
17648
17649         * mini.h: Bump AOT file version.
17650
17651 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17654
17655 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17656
17657         * Makefile.am (check-local): Call semdel-wrapper.
17658
17659 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17660
17661         * mini-x86.c: Revert the last change as it seems to break the build..
17662
17663 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17666         
17667         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17668
17669 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17670
17671         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17672         outside of the macro, so strange stuff doesn't happen with gcc4
17673         (NEW_AOTCONST_TOKEN): Likewise.
17674
17675 2005-06-28  Martin Baulig  <martin@ximian.com>
17676
17677         * mini.c (mini_class_is_system_array): New static method; use this
17678         instead of `klass->parent == mono_defaults.array_class' everywhere
17679         since this also works for the new generic array class.
17680
17681 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17682
17683         * inssel.brg: Remove warnings.
17684
17685 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * mini-ia64.c: Ongoing IA64 work.
17688
17689         * basic-float.cs: Add float->i1 conversion test.
17690
17691         * iltests.il: Add conv.u4 test.
17692
17693 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * inssel-long.brg: Fix bug caused by last change.
17696
17697 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17698
17699         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17700         BSDs.  Allows the x86 JIT to work on OSX86
17701
17702 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17703
17704         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17705         u4->i8 conversion.
17706
17707         * mini-ia64.c: Ongoing IA64 work.
17708
17709 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17710
17711         * mini-ia64.c: Ongoing IA64 work.
17712
17713         * driver.c: Clean up jit_code_hash as well when using --regression.
17714
17715         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17716
17717         * basic-long.cs: Add tests for long->u4 conversion.
17718
17719 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17720
17721         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17722         that we do not depend on undefined C behavior: the order stuff
17723         gets evaluated within an expression. Fixes mono when compiled on
17724         GCC 4.
17725
17726 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17727
17728         * *-ia64.*: Ongoing IA64 work.
17729
17730         * aot.c: Lower memory usage while loading AOT methods.
17731
17732         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17733
17734         * mini.h: Bump AOT file format version.
17735
17736 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17737
17738         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17739
17740 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17741
17742         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17743         not on callee assembly). Fixed some comments.
17744
17745 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17748         it gets proper disassembly.
17749         (emit_method_info): Remove some dead code.
17750
17751         * mini.c (mini_method_compile): Allways allocate the GOT var in
17752         mono_method_to_ir for emulating opcodes.
17753
17754 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17755
17756         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17757         before freeing the code memory. Fixes #74990.
17758
17759         * objects.cs: Add regression test for #74992.
17760
17761         * liveness.c: Extend live ranges of arguments to the beginning of the
17762         method. Fixes #74992.
17763
17764         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17765         so it points into the faulting instruction.
17766
17767 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17770
17771         * *-ia64.*: Ongoing IA64 work.
17772
17773         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17774
17775 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17776
17777         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17778
17779         * *-ia64.*: Ongoing IA64 work.
17780
17781 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17782
17783         * basic-long.cs: Add tests for add/sub.ovf.
17784
17785         * basic.cs: Add tests for sub.ovf.
17786
17787         * *-ia64.*: Ongoing IA64 work.
17788
17789 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17790
17791         * *-ia64.*: Ongoing IA64 work.
17792
17793         * basic.cs: Add conv.ovf.i4.un test.
17794
17795 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17796
17797         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17798         
17799 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17800
17801         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17802
17803 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17804
17805         * *-ia64.*: Ongoing IA64 work.
17806
17807 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17808
17809         * trace.[ch]:
17810         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17811
17812 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17815
17816 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17819
17820         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17821         of a call is callable by a near call.
17822
17823 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * mini-ia64.c: Ongoing IA64 work.
17826
17827 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17828
17829         * genmdesc.c: Make the generated array non-static.
17830
17831         * inssel-long.brg: Fix LSHR_IMM rule.
17832
17833         * *-ia64.*: Ongoing IA64 work.
17834
17835         * *-ia64.*: Ongoing IA64 work.
17836
17837 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17838
17839         * *-ia64.*: Ongoing IA64 work.
17840
17841         * *-ia64.*: Ongoing IA64 work.
17842         
17843         * mini-ia64.c: Ongoing IA64 work.
17844
17845         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17846
17847 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17848
17849         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17850         
17851         * objects.cs basic-long.cs: Move some tests to objects.cs.
17852
17853 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17854
17855         * *-ia64.*: Ongoing IA64 work.
17856
17857         * iltests.il: Add a new test.
17858
17859         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17860         newobj. Fixes #75042.
17861
17862 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * *-ia64.*: Ongoing IA64 work.
17865         
17866         * *-ia64.*: Ongoing IA64 work.
17867         
17868         * *-ia64.*: Ongoing IA64 work.
17869
17870         * basic.cs objects.cs: Move tests accessing static variables as well.
17871
17872         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17873
17874 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17875
17876         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17877
17878         * driver.c: Always print failed tests.
17879
17880         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17881         frame pointer.
17882
17883         * *ia64*: Ongoing IA64 work.
17884
17885 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * basic.cs: Add tests for add.ovf. Fix warnings.
17888
17889 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17890
17891         * driver.c (mono_main): Avoid crash if no argument is passed to
17892         --break;  Do not use g_error, but f_printf.   And fix all other
17893         ocurrences of the same crash.
17894
17895 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17896
17897         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17898         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17899         Fixes #74742.
17900
17901 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * *-ia64.*: Add beginnings of IA64 backend.
17904
17905         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17906
17907 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17910         Fixes #74925.
17911
17912         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17913
17914         * mini-amd64.c: Fix a warning.
17915
17916 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17919         in float_neg. Fixes #74897.
17920
17921         * mini-amd64.c (emit_call): Fix another near call bug.
17922
17923 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17924
17925         * declsec.c: Keep the appdomain information in the structure. Added a 
17926         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17927         value gets overwritten).
17928         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17929         an MonoAppDomain member to MonoSecurityFrame.
17930         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17931         used in the stack walk. Now use a MonoArray which grow (double) when
17932         it gets full.
17933
17934 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17935
17936         * mini.c: Re-enabled runtime cleanup, since running threads should
17937         now properly stop when exiting.
17938
17939 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17940
17941         * mini-codegen.c: New file contaning the arch-independent local
17942         register allocator. Not used by any architectures yet.
17943
17944         * mini.h linear-scan.c: Merge some changes from the 
17945         mini-xp-local-regalloc branch.
17946
17947 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17948
17949         * mini-amd64.c (emit_call): Fix calls to native functions when the
17950         runtime is compiled as a shared library. Fixes #74756.
17951
17952         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17953         on a literal field. Fixes #74751.
17954
17955 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17956
17957         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17958
17959 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17960
17961         * objects.cs: Add missing null casting test.
17962
17963 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17964
17965         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17966         in wrapper methods. Also rename 'address' variable to 'offset'.
17967
17968 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17969
17970         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17971         warnings.
17972         
17973         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17974
17975         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17976         work on windows.
17977
17978 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17979
17980         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17981
17982 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17983
17984         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17985         just the last bytes.
17986
17987 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17988
17989         * aot.c (mono_compile_assembly): Fix warning.
17990
17991         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17992         by the _MSC_VER stuff.
17993
17994 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17995
17996         * inssel-long.brg: Fix #74588.
17997
17998         * cpu-amd64.md: Fix #74591.
17999
18000         * iltests.il: Add new regression tests.
18001
18002 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18005         valuetype.
18006
18007 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18010
18011         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18012         from Bill Middleton <flashdict@gmail.com>.
18013
18014 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * arrays.cs: Add new regression test. Fix warnings.
18017
18018 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18019
18020         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18021         and leakage in CKFINITE.
18022
18023         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18024         this to a null op since it is called on amd64 too.
18025
18026         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18027
18028         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18029         body since this is not used on amd64.
18030         
18031         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18032
18033         * mini-amd64.c: Remove obsolete fixmes.
18034
18035         * mini.c (print_method_from_ip): Fix debugging support.
18036
18037 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18038
18039         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18040         so that expressions that don't give much gain are not reduced.
18041         * ssapre.h: Likewise.
18042
18043 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18044
18045         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18046
18047         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18048
18049         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18050
18051 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18054
18055         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18056
18057 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18058
18059         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18060         stack touching.
18061
18062         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18063
18064         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18065
18066         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18067
18068         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18069         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18070
18071         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18072
18073         * mini-x86.c: Fix up stack overflow handling.   
18074
18075         * exceptions.cs: Add new regression test.
18076
18077 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18078
18079         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18080         mono_jit_thread_attach.
18081
18082         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18083
18084 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18085
18086         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18087         avoid calling constructors using callvirt.
18088
18089         * inssel.brg: Fix #74073.
18090
18091 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18092
18093         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18094         compilation with non-GCC compilers.
18095         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18096         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18097
18098 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18099
18100         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18101         klass->interface_offsets (will likely fix bug#74073).
18102
18103 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18104
18105         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18106
18107 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18108
18109         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18110         to amd64_div_reg_size ().
18111         
18112         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18113
18114 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18115
18116         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18117
18118 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18121
18122 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18123
18124         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18125         
18126         * mini.c (mono_precompile_assembly): Load and precompile referenced
18127         assemblies as well. Fixes #74015.
18128
18129 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18130
18131         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18132
18133 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18134
18135         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18136         a lot of checks and (anyway) permissions cannot work until corlib is 
18137         loaded.
18138
18139 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18140
18141         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18142
18143 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18144
18145         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18146         calls (fixes bug#72824).
18147
18148 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18149
18150         * mini.c: fix tail recursion elimination (see test in bug#73936).
18151
18152 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18155         some fp functions in sse2 mode.
18156
18157 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18158
18159         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18160
18161 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18162
18163         * mini.h mini.c: Add mono_get_jit_tls_key ().
18164
18165         * mini-x86.c: Enable fast TLS support on windows.
18166
18167 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18168
18169         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18170         * mini.c: Check for p/invoke method when generating code. If a
18171         p/invoke method, or it's class, isn't decorated with [Suppress
18172         UnmanagedCodeSecurity] then generate code to call System.Security.
18173         UnmanagedDemand (only if the security manager is active).
18174
18175 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18178         last change as it seems to cause strange crashes.
18179         
18180 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18181
18182         * *.c: handle unsafe function pointers where needed.
18183
18184 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * mini.c (mono_jit_free_method): Remove the fixme too.
18187
18188 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18189
18190         * mini.c: As discussed, make the code actually free the delegate
18191         thunk now, to enable the debugging of delegate problems, use
18192         MONO_DEBUG=1 when running Mono. 
18193
18194         This takes also care of parts of the leaks as seen by Joe.
18195
18196 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18197
18198         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18199         thread_tls_offset calculation.
18200
18201 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18202
18203         * declsec.c: Reworked linkdemand checks for icall. The previous code
18204         was using the declaration code (untrusted) and didn't work as expected
18205         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18206         specific case.
18207
18208 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18209
18210         * iltests.il: Add new localloc test.
18211
18212         * mini-amd64.c: Handle large stack allocations the same way as on
18213         windows if stack overflow handling is working.
18214         
18215         * mini-amd64.c: Allocate the signal stack using mmap.
18216
18217         * mini.c (sigsegv_signal_handler): Fix reading of context.
18218
18219         * mini-exceptions.c: Fix up stack overflow handling.
18220
18221         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18222
18223         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18224
18225         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18226
18227         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18228
18229         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18230         tramp_init functions as they are no longer needed.
18231
18232 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18235         
18236         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18237
18238         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18239         
18240         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18241         support that now.
18242
18243         * mini-ops.h: Add OP_LMUL_IMM.
18244
18245         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18246         long mul/div opcodes as intrinsic.
18247
18248         * mini-amd64.c (emit_call): Handle the case when the callee might be
18249         an AOT method.
18250
18251 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18254         extra safe.
18255         
18256         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18257
18258         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18259
18260 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18261
18262         * mini.c (mono_codegen): Don't leak here, to help people running
18263         monogrind.
18264
18265 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18268         conversions in sse2 mode.
18269
18270         * basic-float.cs: Add regression test.
18271         
18272         * mini-amd64.c: Reenable sse2.
18273
18274 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18275
18276         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18277
18278 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18279
18280         * driver.c: Copyright text should include 2005.
18281         
18282 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18283
18284         * cpu-amd64.md (load_membase): Fix more max lengths.
18285
18286 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18287
18288         * cpu-amd64.md (load_membase): Fix max length.
18289
18290         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18291
18292         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18293
18294         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18295         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18296
18297         * basic-float.cs: Add rounding regression test.
18298
18299         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18300
18301 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18302
18303         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18304         structures in registers for pinvoke wrappers.
18305
18306 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18307
18308         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18309
18310 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18311
18312         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18313         wrapper to mono_jit_thread_attach.
18314
18315         * mini.c (mini_jit_thread_attach): New jit icall.
18316
18317         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18318         native->managed wrappers.
18319
18320         * exceptions.cs: Add new regression test.
18321
18322         * mini.c (optimize_branches): Check regions in the cbranch to throw
18323         block case as well. Fixes #73242.
18324
18325 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18326
18327         * mini.c: thread safety fixes.
18328
18329 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18330
18331         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18332         patching stuff, since delegates use jump trampolines so there is
18333         no caller.
18334
18335         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18336         jump trampolines.
18337         
18338         * tramp-amd64.c: Fix build.
18339
18340         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18341         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18342
18343         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18344         Rename this to mono_arch....
18345         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18346
18347         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18348
18349         * mini-amd64.c (emit_call): If both the caller and the callee is
18350         guaranteed to have 32 bit addresses, emit a normal call.
18351
18352         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18353
18354         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18355         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18356         method_ptr inside delegates.
18357
18358 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18359
18360         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18361         invalidated. Fixes #73001.
18362
18363         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18364
18365         * mini-x86.c: Only use stdcall for pinvokes on windows.
18366
18367 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18368
18369         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18370         * mini-x86.c: remove unreliable __thread var offset detection,
18371         use the correct accessors and enable by default.
18372
18373 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * mini.c (mono_jit_free_method): Fix memory leak.
18376
18377 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18380
18381 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18382
18383         * cpu-amd64.md: Fix lengths of atomic opcodes.
18384
18385 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18386
18387         * driver.c: try to not imply using ICU is any good.
18388
18389 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18392         functions as inline ops.
18393
18394         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18395         some Interlocked functions as inline ops.
18396
18397         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18398
18399         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18400
18401         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18402
18403         * mini.c: Add support for OP_NOT_TAKEN.
18404
18405         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18406         structures in registers for pinvoke wrappers.
18407
18408         * mini-amd64.c: Fix warnings.
18409
18410 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18411
18412         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18413
18414         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18415
18416         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18417         address instead of loading the address from it.
18418
18419         * mini-x86.c: Add support for returning small structs in registers
18420         on Win32. Fixes part of #70864.
18421         
18422 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * trace.c (get_token): Improve error checking.
18425
18426 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18427
18428         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18429
18430 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18431  
18432         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18433         it can be reused for MonoClass.
18434         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18435         _LINKDEMAND.
18436
18437 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18438
18439         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18440         instead of a MonoReflectionMethod. The method information wasn't used
18441         when displaying SecurityException details (but will be now).
18442
18443 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18444
18445         * Makefile.am : windows build fix.
18446
18447 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * iltests.il: Add new regression test.
18450
18451         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18452         #72522.
18453
18454 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18455  
18456         * mini.c: Moved linkdemand check into helper function check_linkdemand
18457         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18458         LDFTN, LDVIRTFTN).
18459
18460 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18461
18462         * declsec.c: Added statistics counter for different kinds of 
18463         LinkDemands.
18464         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18465         (and commented) declaration.
18466         * mini.c: Added statistics counter for security Demand code 
18467         generation. Added display of security statistics.
18468
18469 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18472         Fix compilation errors under gcc-2.95.
18473
18474 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18475
18476         * mini.c, driver.c: Use the new jit trampoline hashtable
18477
18478 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18479
18480         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18481
18482 2005-02-11  Martin Baulig  <martin@ximian.com>
18483
18484         * debug-mini.c (mono_debug_close_method): Free the line number array.
18485
18486 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18489         icalls.
18490
18491         * mini.h: Bump AOT file format version. 
18492
18493 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18494
18495         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18496         APTC and P/Invoke.
18497         * declsec.h: Added macros to get/set lazyly initialized security 
18498         informations about assemblies. Added new enum for different type of
18499         possible LinkDemand violation. Added function to check LinkDemands.
18500         * mini.h: Added a field to MonoCompile to hold any security violation
18501         detected when JITting a method (so it can be thrown later).
18502         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18503         and CEE_CALLVIRT. Added code to throw exception at the end of
18504         mini_method_compile (note: the exception is unhandled right now).
18505
18506 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18507
18508         * mini.c, jit-icalls.c: use the managed implementation of
18509         memset for initobj and memset, to avoid managed <-> unmanaged
18510         transitions.
18511
18512 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18515         optimization if it would need a GOT var.
18516
18517         * basic.cs: Add tests for constant propagation and switch statements.
18518
18519         * ssa.c: Fix out-of-range constant propagation and switch statements.
18520
18521 2005-02-09    <vargaz@freemail.hu>
18522
18523         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18524
18525 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18528
18529 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18530
18531         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18532
18533 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18534
18535         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18536         arithmetic operations.
18537
18538 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18539
18540         * mini-ppc.c: add a workaround for broken user code that
18541         DllImports vararg functions with non-vararg signatures.
18542
18543 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18546         meaningfull error message for assemblies written in Managed C++.
18547
18548         * tramp-amd64.c mini-amd64.h: Add support for 
18549         create_trampoline_from_token ().
18550
18551         * aot.c mini-x86.c abcremoval.c: Applied patch from
18552         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18553
18554 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18557         which takes a MonoImage/token as parameter instead of a MonoMethod.
18558
18559         * aot.c: Use the new trampoline for initializing vtables.
18560
18561         * aot.c: Add support for ldfld/stfld_remote wrappers.
18562
18563         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18564         rules for compare <MEM>, IMM.
18565
18566         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18567
18568         * aot.c: Handle inherited finalizers correctly.
18569
18570 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * inssel.brg (stmt): Add a missing _setup_... ().
18573
18574         * aot.c: Save some parts of the class state to the AOT file and use it
18575         to recompute that state when a class is initialized.
18576
18577         * mini.c: Install AOT hooks into the runtime.
18578
18579         * mini.h: Bump AOT file format version.
18580         
18581         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18582         Fixes #72148.
18583
18584         * iltests.il: Add new test.
18585
18586 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18587
18588         * mini.c: fix typo.
18589
18590 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18591
18592         * mini.c: setup the statistical profiler in the thread attach
18593         callback to cope with the new single thread code.
18594
18595 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18596
18597         * mini-ppc.c: ensure we have enough room for the profiler
18598         calls (fixed bug#72084).
18599
18600 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18601
18602         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18603         it.
18604
18605 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18606
18607         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18608
18609 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18610
18611         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18612         to succesfully execute parrotbench).
18613         * ssapre.h: Likewise.
18614
18615 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18616
18617         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18618         variable for stores to method arguments (fixes a SSAPRE issue).
18619
18620 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18621
18622         * mini.c: handle value types in dup, fixes gen-112.cs.
18623
18624 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18625
18626         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18627         sequence for calls in dynamic methods to avoid thunks.
18628
18629 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18630
18631         * mini.c: correctly remove dynamic methods from the hashtable.
18632
18633 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18634
18635         * driver.c: Disabled SSAPRE until fix the bug that appears
18636         in IronPython's parrotbench.
18637
18638 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18641
18642         * mini.c (mono_method_to_ir): Revert the previous change.
18643         
18644         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18645         when AOT compiling.
18646
18647         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18648         mono_jit_info_table_find () etc. when running under valgrind.
18649
18650         * inssel.brg: Fix warnings.
18651
18652         * mini-exceptions.c: Fix warnings.
18653
18654 2005-01-31  Martin Baulig  <martin@ximian.com>
18655
18656         * driver.c (compile_all_methods_thread_main): Don't try to compile
18657         generic methods or anything which has type parameters.
18658
18659 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18662
18663         * TestDriver.cs: Add --verbose flags.
18664
18665         * graph.c ssa.c: Fix 64 bit warnings.
18666         
18667         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18668         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18669         Fix 64 bit warnings.
18670
18671         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18672         variable not spotted by gcc.
18673         
18674         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18675         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18676         X86_COMPARE_MEMBASE opcodes.
18677
18678         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18679
18680 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18681
18682         * *: MonoMethod->signature might be NULL now. You *MUST* use
18683         mono_method_signature.
18684
18685 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * driver.c (compile_all_methods_thread_main): Compile the methods
18688         without invoking cctors.
18689
18690 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18691
18692         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18693         * basic-calls.cs: test for the above.
18694
18695 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18698         MonoJitInfo changes.
18699
18700 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18703         eagerly if it contains dynamic methods.
18704         
18705         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18706
18707         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18708         trace, it is now computed by an icall from trace_ips.
18709         
18710         * mini-exceptions.c: Fix a warning.
18711
18712 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18713
18714         * mini-exceptions.c: don't bother getting stack trace info if
18715         it's not going to be used.
18716
18717 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18718
18719         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18720         ssapre-mini-ops.h.
18721
18722 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18725
18726         * aot.c: Avoid calling mono_method_get_header () if not needed.
18727
18728         * mini.h: Bump AOT file format version.
18729         
18730         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18731
18732         * mini.c (mono_print_tree): Print more info for calls.
18733
18734 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18735
18736         * declsec.h: Remove warning by adding missing include for marshal.h
18737
18738 2005-01-26  Martin Baulig  <martin@ximian.com>
18739
18740         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18741         `ip' twice.
18742
18743 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18744
18745         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18746         flags.
18747
18748         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18749
18750         * aot.c (mono_compile_assembly): Fix a warning.
18751
18752 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18753
18754         * declsec.c: Look for security attributes on the original MonoMethod 
18755         (and not the wrapped one). This fix permissions on icalls.
18756
18757 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18758
18759         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18760
18761         * mini.c (mono_allocate_stack_slots): Add a fixme.
18762
18763         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18764
18765 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18766
18767         * inssel.brg: optimize casts of sealed types (more
18768         optimizations waiting for fixes in remoting).
18769
18770 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18771
18772         * inssel.brg (stmt): Add another dummy rule.
18773
18774         * driver.c: Fix warnings.
18775
18776         * driver.c (mono_main): If running under valgrind, instruct glib to use
18777         the system allocation functions so valgrind can track the memory
18778         allocated by the g_... functions.
18779
18780         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18781
18782         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18783
18784         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18785
18786         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18787         variables in try regions.
18788
18789         * mini.c (mini_method_compile): Don't disable optimizations on large
18790         methods when AOT compiling.
18791
18792         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18793         allocate stack slots. Not yet used.
18794
18795 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18796
18797         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18798
18799 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18800
18801         * mini-ppc.c: make the branch info relative as the code
18802         buffer can be reallocated.
18803
18804 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18805
18806         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18807         * driver.c: Removed the AOT/security restriction. Now initialize the
18808         security manager (in metadata) if --security is used.
18809         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18810         rather than the pointer to declarative security, when AOT is used.
18811
18812 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18813
18814         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18815         basic blocks, reduced intrinsic exception throwing code size.
18816
18817 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18818
18819         * driver.c (mini_usage): Reorder the usage screen.
18820
18821 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini.c (mono_resolve_patch_target): Fix warning.
18824
18825 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18828         previous patch.
18829
18830         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18831
18832         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18833         breaks the amd64 build.
18834
18835         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18836         register allocation. Fixes #71454.
18837
18838         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18839
18840         * arrays.cs: Add new regression test.   
18841
18842 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18843
18844         * ssapre.c: Turned usage of snprintf to GString.
18845         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18846         (I left it on by mistake in my previous commit).
18847
18848 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18849
18850         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18851         on cond branch optimization (fixes bug# 71515).
18852
18853 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18854
18855         * abcremoval.c: Fixed bug 71062.
18856         * abcremoval.h: Likewise.
18857
18858 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18859
18860         * mini.c: Added a new functionality to optimize_branches, the removal
18861         of useless basic blocks, and fixed some problem in the removal of
18862         critical edges; some utility functions added for both purposes.
18863         * ssapre.c: Added complex expression support, and fixed bug 70637.
18864         * ssapre.h: Likewise.
18865         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18866         enabled in SSAPRE.
18867         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18868         * driver.c: Re-enabled SSAPRE.
18869
18870 2005-01-19  Martin Baulig  <martin@ximian.com>
18871
18872         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18873         the result of mono_get_method_constrained().
18874
18875 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18876
18877         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18878         manager.
18879
18880 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18881
18882         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18883         be detected.  Fixes #59296.
18884
18885 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18888         which can happen. Fixes #71361.
18889
18890 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18893         manager.
18894
18895 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18896
18897         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18898         appdomain-unload.exe to fail.
18899         
18900         * mini.c: Fix some memory leaks.
18901
18902 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18903
18904         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18905         Fixed bug and sped up some codepaths.
18906
18907 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18908
18909         * mini.c: Fix some memory leaks.
18910
18911         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18912         conversion.
18913
18914         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18915
18916         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18917         #71320.
18918
18919         * iltests.il: Add regression test for #71320.
18920
18921 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * mini.c (mono_codegen): Fix installation of profiler hooks.
18924
18925         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18926
18927 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * mini.h, mini.c, cfold.c: optimize access to enum
18930         readonly fields, too. Eval conditional branches if possible
18931         to perform unreachable code removal in more cases.
18932
18933 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18934
18935         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18936
18937         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18938         code manager.
18939
18940         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18941         WinXP DEP. Fixes #71244.
18942
18943 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18946
18947 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18950
18951 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18952
18953         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18954         changes.
18955
18956         * mini.h: Bump AOT version.
18957
18958         * mini.h (MonoCompile): Change exvar to a hash table.
18959
18960         * mini.c: Allocate a separate exvar for each handler block.
18961
18962         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18963
18964         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18965         ex var with the pending exception and only throw if the two are equal.
18966         Fixes #68552.
18967         
18968         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18969
18970         * mini-x86.c: Fix warnings.
18971
18972         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18973         used by all the ports now.
18974
18975         * aot.c: Add write-symbols and save-temps options.
18976
18977 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18978
18979         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18980
18981 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18982
18983         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18984         operations.
18985
18986         * tramp-s390.c: Check vtable slot belongs to the domain.
18987
18988         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18989         as per other platforms.
18990
18991         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18992
18993 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18994
18995         * driver.c: we don't run the Main() code in a subthread anymore.
18996
18997 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18998
18999         * mini.c: added experimental rtc support in the statistical
19000         profiler: if the user has the permission, more accurate statistics
19001         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19002         The MONO_RTC value must be restricted to what the linux rtc allows:
19003         power of two from 64 to 8192 Hz.
19004
19005 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19006
19007         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19008
19009 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19010
19011         * mini-ppc.c: better icache flush for smp.
19012
19013 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19014
19015         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19016
19017         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19018         amd64 port, not yet used.
19019
19020 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19021
19022         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19023         a struct type.
19024
19025 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19026
19027         * driver.c: Added --security option to activate the security manager.
19028         Right now this will allow code generation for declarative demands and
19029         is disabled when AOT is specified.
19030         * mini.c: Add code generation for declarative security demands.
19031         * mini.h: Add mono_use_security_manager as an extern gboolean.
19032
19033 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19034
19035         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19036         emitting more dense assembly code.
19037
19038         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19039         exception throwing stuff.
19040
19041 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19044         dead code.
19045
19046         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19047         left in by mistake.
19048
19049         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19050         fixed.
19051
19052         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19053
19054         * tramp-*.c: Only patch vtable slots if the object is in the current
19055         domain. Fixes appdomain-unload.exe.
19056
19057         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19058         
19059         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19060         x86 branch.
19061
19062 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19063
19064         * mini.c (reverse_branch_op): New helper function.
19065
19066         * mini.c (optimize_branches): Run the new optimization only on 
19067         platforms which support it. Also reverse all kinds of branches.
19068
19069         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19070
19071         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19072         a throw statement.
19073
19074         * mini.c (optimize_branches): Reverse not-equals branches if the false
19075         bblock is a throw. This happens a lot of time with argument checking in
19076         corlib.
19077
19078         * mini.c (mono_codegen): Add support for placing basic blocks after
19079         the function epilogue.
19080
19081         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19082         function epilogue.
19083         
19084 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19085
19086         * mini.c (setup_stat_profiler): Only set this up if the platform
19087         supports ITIMER_PROF.
19088
19089 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19090
19091         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19092         previous patch.
19093
19094         * inssel.brg: Fix a warning.
19095
19096 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19097
19098         * mini.c: added support for statistical profiler 
19099         (run with: --profile=default:stat).
19100
19101 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19104
19105         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19106
19107         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19108         related to global registers from the amd64 port.
19109
19110 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19113
19114         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19115         with global registers.
19116         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19117
19118         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19119
19120 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19121
19122         * debug-mini.c (encode_value): Fix off-by-one.
19123
19124         * aot.c (encode_value): Likewise.
19125
19126         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19127
19128 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19131         AOT.
19132
19133         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19134         
19135         * aot.c (emit_method_info): Increase size of temp buffer.
19136
19137         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19138         the AOT case.
19139
19140 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19141
19142         * aot.c (emit_method_info): Fix build.
19143         
19144         * aot.c: Further rework of the AOT file format to reduce the size of
19145         the method info data.
19146
19147         * mini.h: Bump AOT file format version.
19148
19149 2004-12-27  Martin Baulig  <martin@ximian.com>
19150
19151         * mini.c (mini_get_method): New static method; call
19152         mono_get_method_full() and mono_get_inflated_method().
19153         (mono_method_to_ir): Use mini_get_method() instead of
19154         mono_get_method_full(). 
19155
19156 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19157
19158         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19159
19160 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19163
19164         * inssel-amd64.brg: Add some optimization rules.
19165
19166 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19167
19168         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19169         standard not GC'd stuff is fine.
19170
19171 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * aot.c: Rework the AOT file format to get rid of most of the global
19174         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19175
19176         * mini.h: Bump AOT file format version.
19177         
19178 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19179
19180         * mini.h: Bump AOT file format version.
19181
19182         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19183         address is inside a GOT.
19184
19185         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19186
19187         * cpu-pentium.md: Increase the maximum size of some instructions which
19188         might involve a got access.
19189         
19190         * mini.c (get_method_from_ip): Another debug helper function.
19191
19192         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19193         when got var accesses are created during the decompose phase.
19194
19195         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19196
19197         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19198         argument mini_compile_method and to MonoCompile, and use this to
19199         determine whenever a given method is compiled for AOT. This allows the
19200         other methods compiled during AOT compilation to be free of AOT stuff,
19201         so the backends does not need to add special support for them by
19202         creating a fake GOT etc.
19203
19204         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19205         longer needed.
19206
19207 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19208
19209         * mini.c (mono_method_to_ir): It turns out that some of the
19210         x-appdomain wrappers are lax with types, so just ignore this for
19211         all wrappers.
19212
19213         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19214         at the vtable->klass. If it is non-shared code we can just use the
19215         vtable.
19216
19217 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19218
19219         * mini-ppc.c: access MonoDomain from tls, too.
19220
19221 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19222
19223         * declsec.c: Removed unused variable (and related warning ;-)
19224
19225 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19226
19227         * iltests.il: New test for LDELEMA on an array of ref types.
19228
19229         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19230         all ldelema's on reftypes.
19231         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19232         it was the wrong place to put it.
19233
19234         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19235         register to pop to make this cleaner, at the request of Paolo.
19236
19237 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19238
19239         * mini-ops.h (OP_GETHASHCODE): New op.
19240
19241         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19242
19243         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19244         operation.
19245
19246         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19247         by 25%.
19248         
19249         * mini-x86.c (mono_arch_output_basic_block): Rather than
19250
19251         add ebp, 4
19252
19253         Emit
19254
19255         pop edx
19256
19257         The first is 3 bytes while the second is 1. This saves 36 kb on
19258         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19259         see a small boost because of icache locality.
19260
19261         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19262
19263 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19264
19265         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19266         started code sharing with the generic code.
19267
19268 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19269
19270         * mini-ppc.c, cpu-g4.md: added code for direct access to
19271         tls data slots.
19272
19273 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19274
19275         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19276          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19277         to OP_TLS_GET.
19278
19279 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19280
19281         * declsec.c|h: Added functions to cache the declarative stack modifiers
19282         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19283         structure.
19284         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19285         created. Register internal calls for System.Security.SecurityFrame::
19286         _GetSecurityFrame and _GetSecurityStack.
19287         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19288         the definitions for the new stack walk/callback mechanism.
19289         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19290         first security frame for LinkDemands and InheritanceDemands) and
19291         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19292         from lupus.
19293         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19294         walk initialization (lupus).
19295
19296 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19297
19298         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19299         idiom.
19300         (handle_loaded_temps): Do not create a temporary variable for
19301         things that we know are temps. They will never be modified.
19302         (mono_spill_call): Set MONO_INST_IS_TEMP
19303         (mono_emulate_opcode): ditto
19304         (emit_tree): ditto
19305         (mono_method_to_ir.CEE_DUP): ditto
19306
19307 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19308
19309         * mini.c (type_to_eval_stack_type): Make this handle the void type
19310         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19311         (emit_tree): use ip_in_bb to special case some common idioms
19312         Update all callers to pass in the IP.
19313         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19314
19315         This gives us a nice 2% speedup in mcs bootstrap.
19316
19317         * mini-x86.c (peephole_pass): Peephole pass to make
19318         mov  [foo], eax
19319         push [foo]
19320
19321         into
19322
19323         mov [foo], eax
19324         push eax
19325
19326         * mini.c (ip_in_bb): new method.
19327         (mono_method_to_ir): use this method rather than doing the hash
19328         lookup ourselves.
19329
19330         * linear-scan.c (mono_linear_scan): When expiring actives, you
19331         don't need to keep around variables that expire on this
19332         instruction. This makes it so that:
19333              a = b + 1
19334         will turn into:
19335              store (ebx add (ebx, 1))
19336         which will become
19337              add ebx, 1
19338
19339 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19342         combination to avoid doing two copies. Fix up problems with previous
19343         patch.
19344
19345         * mini.c: Fix 64 bit warnings.
19346
19347         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19348
19349 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19350
19351         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19352         changes from the x86 code.
19353
19354         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19355
19356 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19357
19358         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19359         throwing code to reduce its size, unify the AOT and non-aot code and 
19360         get rid of relocations in the AOT case.
19361
19362         * mini-x86.h mini.c exceptions-x86.c 
19363         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19364         raise corlib exceptions which doesn't require relocations in the 
19365         caller.
19366
19367         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19368
19369 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19372         needed.
19373
19374         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19375         in the AOT case.
19376
19377 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19378
19379         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19380         with add function when used from Inc/dec atomic 
19381         functions. Re-enabled optimization on x86.
19382         * mini-ops.h: renamed atomic_add functions to
19383         allow _add to match the Interlocked::Add and
19384         _add_next to match Interlocked::Inc/Dec.
19385
19386 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19387
19388         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19389         linking of BBs to the end BB, and enabled SSAPRE also with
19390         consprop and copyprop (which was prevented by that bug).
19391
19392 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19393
19394         * mini-x86.c: disabling the Interlocked optimizing code. 
19395
19396 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19399         file version check.
19400         
19401 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19402
19403         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19404         interlocked optimization due lack of support on x86, rewrote 
19405         exchange to take into account that base may be in eax.
19406         
19407         xsp works again; activated Interlocked optimizing code.
19408         
19409 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19410
19411         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19412
19413 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * mini-ops.h: Add new opcodes.
19416
19417         * mini.h: Add new patch types. Add got_var to MonoCompile.
19418
19419         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19420         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19421         make it work with all kinds of patchable code.
19422
19423         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19424         address of the GOT, and referencing entries in the GOT.
19425
19426         * mini.c: Add code to load the GOT address if needed by an opcode.
19427
19428         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19429         independent AOT code on the x86 using an elf-style Global Offset Table.
19430
19431 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19432
19433         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19434
19435 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19436
19437         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19438         when running xsp.
19439
19440 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19441
19442         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19443         of Interlocked:Increment/Decrement/Add as inline ops.
19444         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19445
19446 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19447
19448         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19449         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19450
19451 2004-12-12  Duncan Mak  <duncan@ximian.com>
19452
19453         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19454         again. `patch_info->table_size' is no longer valid after Zoltan's
19455         commit #37636.
19456
19457 2004-12-12  Martin Baulig  <martin@ximian.com>
19458
19459         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19460         if we are the "real" method, ie. not an inlined method inside it.
19461
19462 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19463
19464         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19465         before we look in the special fields table. This fixes
19466         ../tests/thread-static-init.cs.
19467
19468 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19469
19470         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19471         for Array get_Rank and get_Length. Fixes bug #70465.
19472
19473 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19476         separate structure to reduce the size of MonoJumpInfo.
19477
19478 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19479
19480         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19481
19482 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19483
19484         * mini.c (mini_get_inst_for_method): Changed to allow ports
19485         to return a MonoInst instead of opcode 
19486         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19487         
19488         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19489         Allow ports to return a created MonoInst instead of op-code, will enable
19490         new optimizations.
19491         (renamed mini_get_opcode_for_method to better reflected the functionality)
19492
19493 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19496
19497 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19498
19499         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19500         Fixes #69985.
19501
19502 2004-12-08  Martin Baulig  <martin@ximian.com>
19503
19504         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19505         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19506
19507 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19510         correctly.
19511
19512         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19513         arithmetic.
19514
19515 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19516
19517         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19518
19519 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19520
19521         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19522         bug introduced by the previous patch.
19523
19524 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19525
19526         * mini-ppc.c, objectc.cs: handle large structs passed by value
19527         (fixes bug #69972).
19528
19529 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19530
19531         * mini-ppc.c: OP_ARGLIST implementation from
19532         Geoff Norton  <gnorton@customerdna.com>.
19533
19534 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19535
19536         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19537         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19538
19539 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19540
19541         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19542
19543 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19544
19545         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19546         support.
19547
19548 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * mini-sparc.c: Zero out localled-ed memory.
19551
19552         * iltests.il: Add tests for zeroing out localloc-ed memory.
19553
19554 2004-12-04  Martin Baulig  <martin@ximian.com>
19555
19556         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19557         mono_method_get_signature_full().       
19558
19559 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19560
19561         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19562         and some utility functions (always for SSAPRE), integrated SSAPRE.
19563         * mini.h: Likewise.
19564         * driver.c: Added ssapre option.
19565         * ssa.c: Small fix on OP_ARG handling.
19566         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19567         * Makefile.am: Likewise.
19568
19569 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19572         now in the xp code.
19573
19574         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19575         icall.
19576
19577 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19578
19579         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19580         
19581         * cpu-s390.md : Increase instruction length of oparglist.
19582
19583         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19584
19585 2004-11-30  Martin Baulig  <martin@ximian.com>
19586
19587         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19588         virtual generic methods.  We call a special helper_compile_generic_method()
19589         icall to retrieve the method from the vtable, inflate and compile
19590         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19591
19592         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19593
19594 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19597
19598 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19599
19600         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19601         Fixes #69929.
19602
19603 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19604
19605         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19606         platforms with PIC aot.
19607
19608 2004-11-28  Martin Baulig  <martin@ximian.com>
19609
19610         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19611         Fixes gen-112.cs.
19612
19613 2004-11-28  Martin Baulig  <martin@ximian.com>
19614
19615         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19616         the result of mono_type_get_underlying_type() to check whether
19617         we're byref.
19618
19619 2004-11-26  Martin Baulig  <martin@ximian.com>
19620
19621         * mini.c
19622         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19623         in the g_assert().
19624
19625 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19628         the same way as the other arguments so they won't get clobbered.
19629
19630         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19631         calls through R11 since it is clobbered by the trampoline code.
19632
19633 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19634
19635         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19636         pick up in-tree mscorlib.dll.
19637
19638 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19641
19642         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19643         runtime data/code are now stored in a table similar to the GOT in ELF. 
19644         This allows the code itself to be position independent.
19645
19646         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19647         loading changes.
19648
19649         * aot.c: Attach ELF type (object/function) directives to all global
19650         symbols.
19651
19652         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19653
19654         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19655
19656         * mini-amd64.h: Turn on PIC AOT code.
19657
19658         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19659         returning the offset within an OP_AOTCONST instruction where the GOT
19660         offset needs to be added.
19661
19662         * mini.h: Bump AOT file format version.
19663
19664 2004-11-25  Martin Baulig  <martin@ximian.com>
19665
19666         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19667         uninflated generic methods.
19668
19669 2004-11-25  Martin Baulig  <martin@ximian.com>
19670
19671         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19672
19673 2004-11-24  Martin Baulig  <martin@ximian.com>
19674
19675         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19676         original klass (this only applies for generic instances).
19677
19678 2004-11-24  Martin Baulig  <martin@ximian.com>
19679
19680         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19681         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19682         that array).
19683
19684 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19687         localloc. Fixes #69678.
19688
19689         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19690         
19691 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19694         used SSE registers on pinvoke calls. Fixes #69774.
19695
19696 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19697
19698         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19699         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19700
19701 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19702
19703         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19704         Refer directly to the mcs/ tree.
19705
19706 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19707
19708         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19709         Check if a trampoline for a synchronized method is required. 
19710
19711 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19712
19713         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19714         with localloc if needed. Throe arithmetric exception in
19715         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19716         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19717
19718 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19719
19720         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19721         types before switching on type.  Fixes #69622.
19722
19723 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19724
19725         * Makefile.am (check-local): New.  Integrate into 'make check'.
19726         (MCS,RUNTIME): Define using in-tree mono and mcs.
19727         (ILASM): New.
19728         (%.exe): Use $(ILASM).
19729
19730 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19731
19732         * mini-ppc.c: adjust initial prolog size (bug #69691).
19733
19734 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19737         #69664.
19738
19739 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19740
19741         * Makefile.am (clean-local): Rename from 'clean'.
19742
19743 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19744
19745         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19746         to mono_arch_is_int_overflow. 
19747         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19748         SIGFPE events.
19749
19750 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19751
19752         * declsec.c|h: New files to support declarative security attributes.
19753         Added function to check if a method has (applicable) security.
19754         * mini.c|h: Add check for declarative security attributes in
19755         mono_method_check_inlining.
19756         * Makefile.am: Added declsec.c and declsec.h to the build.
19757
19758 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19759
19760         * mini.c, mini.h: update to keep dynamic code info per-domain.
19761
19762 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19765         (mini_init): Get rid of it from here too.
19766
19767 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19768
19769         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19770         implemented OP_RETHROW (patch by Geoff Norton
19771         <gnorton@customerdna.com>).
19772
19773 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19774
19775         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19776         between appdomains.  Fixes appdomain-unload on PPC.
19777
19778 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19779
19780         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19781         mini-exceptions.c: handle the new wrapper types.
19782         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19783         token value as a MonoClass* when compiling a wrapper.
19784         mono_jit_create_remoting_trampoline now takes an additional
19785         MonoRemotingTarget parameter.
19786         
19787 2004-11-10  Martin Baulig  <martin@localhost>
19788
19789         * mini.c (mono_method_to_ir): Use `generic_container->context'
19790         rather than creating a new one.
19791
19792 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19793
19794         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19795
19796         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19797
19798 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19801         the experimental aot cache stuff.
19802
19803 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19804
19805         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19806         mini-exceptions.c: update to exception clause structure changes.
19807
19808 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19809
19810         * exceptions-x86.c (throw_exception): Fix warnings.
19811
19812         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19813         for OP_RETHROW.
19814
19815 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * exceptions-sparc.c (get_throw_exception): Really fix this.
19818
19819 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19820
19821         * tramp-*.c: we no longer support icalls without wrappers, so
19822         a bit of code can be removed here
19823
19824 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19827         patch.
19828
19829         * cpu-sparc.md: Add op_rethrow.
19830
19831         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19832
19833         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19834
19835         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19836         * mini-ops.h: Add OP_RETHROW.
19837
19838         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19839
19840         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19841
19842 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19843         
19844         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19845         Makes the output much easier to read
19846
19847 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19848
19849         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19850         prevents another huge leak when compiling with ssa. Secondly, the
19851         performance of doing this rather than freeing the lists is much
19852         better. GList does a lock every time you allocate a list link,
19853         so that it can use a memory pool. So, it is better to just use
19854         a memory pool of our own.
19855         
19856         * ssa.c, linear-scan.c: replace g_list_remove_link with
19857         g_list_delete.  The remove one does not free the GList, so we were
19858         leaking memory. On -O=all --compile-all with corlib, this cut down
19859         3 MB of allocations.
19860
19861 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19864
19865         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19866
19867         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19868         into a new function mono_create_jit_trampoline ().
19869
19870 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * trace.c (get_spec): Allow tracing of classes without a namespace.
19873
19874 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19875
19876         * mini.c: Fix pointer overwrite in mini_method_compile.
19877
19878 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19879
19880         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19881         The darwin ABI needs some special handling for 1 and 2 byte structs
19882         Lets use lbz/lhz instead of lwz everywhere.
19883         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19884         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19885         Use stb/sth for the former, and put the latter always on stack instead of in
19886         argument registers.
19887
19888 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * trace.c (is_filenamechar): Add '_'.
19891
19892 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19893
19894         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19895
19896         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19897
19898 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19901         depends on libmonogc. Fixes #68805.
19902
19903 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19904
19905         * mini.c (mono_jit_free_method): Provide extra information for
19906         this error.  Currently this leaks, but will be turned into a
19907         developer option in the future.
19908
19909 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19912
19913 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19916         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19917         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19918
19919 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19920
19921         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19922         trampolines for AOT code.
19923
19924 2004-10-22    <vargaz@freemail.hu>
19925
19926         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19927         constructed types. Fixes #68136.
19928
19929 2004-10-21  Martin Baulig  <martin@ximian.com>
19930
19931         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19932         if it returns true, unwind the stack to the call instruction.
19933
19934 2004-10-21    <vargaz@freemail.hu>
19935
19936         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19937
19938         * mini.h: Bump AOT version number.
19939
19940         * objects.cs: Add another test for unbox trampolines.
19941
19942         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19943         valuetype methods.
19944
19945 2004-10-20    <vargaz@freemail.hu>
19946
19947         * driver.c: Add SHARED to the set of optimizations tested.
19948
19949         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19950
19951         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19952         used by CEE_NEWARR.
19953
19954         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19955
19956 2004-10-20  Martin Baulig  <martin@ximian.com>
19957
19958         * mini-exceptions.c (mono_handle_exception): Call
19959         mono_debugger_handle_exception() to tell the debugger about
19960         catch/finally clauses.
19961
19962 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19965
19966         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19967         #68447.
19968
19969 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19970
19971         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19972         methods as their native size, fixed bug #57543, #57545.
19973         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19974         This saves a temporary register and mullw call down into 1 (minor perf
19975         increase for cases like sum = sum * 5;  This use to translate into:
19976             li r11,5
19977             mullw r28,r28,r11
19978         It now translates to
19979             mulli r28,r28,5
19980
19981 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19982
19983         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19984         #68388.
19985
19986 2004-10-11  Martin Baulig  <martin@ximian.com>
19987
19988         * mini.c (mono_method_to_ir): If we're a generic method, get the
19989         MonoGenericContainer from our MonoMethodNormal and create a
19990         MonoGenericContext from it.
19991
19992 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19995
19996         * basic-long.cs: Add test for checked i8->i2 cast.
19997
19998 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19999
20000         * inssel-ppc.brg: added a couple of speedup rules.
20001
20002 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20005         to speed up rebuilds.
20006
20007 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20008
20009         * mini-s390.c: Minor fix to OP_OR_IMM.
20010
20011 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20014         better. Fixes appdomain-unload.exe on sparc.
20015
20016 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20017
20018         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20019         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20020         see bug 67324.
20021
20022 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20025
20026 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20027
20028         * mini.c: Always generate a field read/write wrapper for members
20029         of the class MarshalByRefObject since the actual instance could
20030         be a CBO.
20031
20032 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20033
20034         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20035
20036 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20037
20038         * driver.c mini.h trace.c: Move the setting of the main assembly into
20039         a separate function called mono_trace_set_assembly () and call it after
20040         actually loading the main assembly. Fixes #66872.
20041
20042 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20045         using the code manager.
20046
20047 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20048
20049         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20050
20051 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * cpu-amd64.md: Fix bug in previous patch.
20054         
20055         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20056         #66650.
20057
20058 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20059
20060         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20061         mini-exceptions.c: updates for changed stack walk interface.
20062
20063 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20064
20065         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20066
20067 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20070
20071 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20074         since assemblies can't be unloaded.
20075         
20076 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * cpu-amd64.md: Fix more instruction lengths.
20079
20080         * cpu-amd64.md: Fix lengths of some instructions.
20081
20082 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20083
20084         * inssel.brg: Make the array ldelema check aot friendly.
20085
20086 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20089
20090         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20091
20092 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * mini-x86.c: Fix build.
20095
20096         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20097         mono_type_get_underlying_type () helper function to simplify code.
20098         
20099 2004-09-09  Martin Baulig  <martin@ximian.com>
20100
20101         * mini-amd64.c: Don't access `type->data.klass' directly, call
20102         mono_class_from_mono_type() instead since the type may be a
20103         generic instance.
20104
20105 2004-09-09  Martin Baulig  <martin@ximian.com>
20106
20107         * mini-amd64.c (get_call_info): Fix support for generic instances.
20108         (add_valuetype): Use mono_class_from_mono_type() to get the class
20109         since we can be a generic instance.
20110
20111 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20112
20113         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20114
20115 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20116
20117         * liveness.c: reset spill costs on each scan: bug 62107
20118
20119 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20120
20121         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20122         unnecessary line that doesn't compile
20123
20124 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20127         trampolines, make them call an error function so people can fix their
20128         code.
20129
20130 2004-09-06  Martin Baulig  <martin@ximian.com>
20131
20132         * mini.c (mono_method_to_ir): When initializing locals, handle a
20133         generic instances like a valuetype if it's a valuetype and like a
20134         class if it's a class.
20135
20136 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20139         stack. Fixes #64674.
20140
20141         * exceptions.cs: Add test for unwinding of call arguments.
20142
20143 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20144
20145         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20146         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20147         set the carry/borrow flag). The sparc and s390 implementations
20148         can now use optimized versions (and simplify the code). ppc bugfixes.
20149
20150 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20153
20154 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * inssel-amd64.brg: Remove leftover 32 bit rule.
20157
20158         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20159
20160 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20163         mono_arch_find_jit_info functions into a new function. Fix a memory
20164         leak.
20165
20166         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20167         refactored code.
20168         
20169 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20170
20171         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20172         as well.
20173         
20174         * exceptions.cs: Add array size tests.
20175
20176         * mini.c: Allocate a separate icall wrapper for each arity of 
20177         mono_array_new_va. Fixes #59509.
20178
20179         * exceptions.cs: Add testcase for 64578.
20180
20181         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20182
20183         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20184         
20185 2004-09-02  Martin Baulig  <martin@ximian.com>
20186
20187         * mini.c (mono_method_to_ir): When initializing the locals, call
20188         handle_initobj() on the generic instance itself, not its
20189         underlying type.
20190
20191 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20194         MonoJitInfo for dynamic methods.
20195
20196         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20197
20198         * mini.c: Add support for freeing JIT data for dynamic methods.
20199         
20200 2004-09-01  Martin Baulig  <martin@ximian.com>
20201
20202         * mini-x86.c (is_regsize_var): Added support for generic
20203         instances.
20204         (mono_arch_emit_prolog): Make this compile again, use
20205         `x86_push_imm_template (code)'.
20206
20207 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20208
20209         * mini-x86.c: make all push_imm instructions that get
20210         patched always emit the long form
20211
20212 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20213
20214         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20215         in a per-domain hash.
20216
20217         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20218         types.
20219
20220 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20223         work.
20224         
20225         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20226         work.
20227
20228         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20229         Beginnings of SSE2 support.
20230
20231         * exceptions.cs: Add more tests for checked int<->uint casts.
20232
20233 2004-08-28  Martin Baulig  <martin@ximian.com>
20234
20235         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20236         generic instances.
20237
20238         * mini.c
20239         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20240         Handle generic instances recursively.
20241
20242 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20243
20244         * iltests.il: test for conv.u8 on a constant
20245
20246 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20247
20248         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20249         LCONV_x4 (shrun_32 (membase)).
20250
20251 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20252
20253         * inssel-x86.brg: c&p rules for push/setret of long
20254
20255 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20256
20257         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20258         compare (regvar, base)
20259
20260         * inssel-x86.brg: more burg love
20261
20262         * inssel.brg: more cleanup
20263
20264         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20265
20266 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20267
20268         * basic-long.cs, basic-calls.cs: new tests for optimization.
20269
20270 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20273         patch.
20274
20275 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20278         
20279 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20280
20281         * inssel.brg (mini_emit_memcpy): use 
20282         NO_UNALIGNED_ACCESS to disable memcpy optimization
20283
20284 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20285
20286         * mini-amd64.c: Handle generic types in various places.
20287
20288         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20289
20290 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20291
20292         * mini.c (handle_box): Fix warning.
20293
20294         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20295
20296         * mini-amd64.h: Enable the emit_state optimization.
20297
20298         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20299
20300         * mini-amd64.c: Add some new 64 bit peephole opts.
20301
20302         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20303
20304         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20305
20306         * mini-amd64.c: Register allocator fixes.
20307
20308         * mini.c: Add an optimization to emit_state to avoid allocation of new
20309         registers on some platforms.
20310
20311 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20312
20313         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20314
20315         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20316         allocation. Fixes #63085.
20317
20318         * basic-long.cs: Add new regression test.
20319
20320         * mini-amd64.c: Register allocator improvements.
20321
20322 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * mini-amd64.c (read_tls_offset_from_method): Add another code
20325         sequence.
20326
20327         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20328         instruction sequence for nullifying class init trampolines.
20329
20330         * objects.cs: Add new regalloc test.
20331
20332         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20333
20334 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20337         
20338         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20339         arguments.
20340
20341         * driver.c: Fix profiling after TLS changes.
20342         
20343         * driver.c (mono_main): Set mono_stats.enabled if needed.
20344
20345         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20346         CEE_BOX.
20347
20348 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20349
20350         * mini-x86.c: use a 1 op rather than a 2 op tls access
20351         instruction -> faster.
20352
20353 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20356         x86 backend.
20357
20358 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20359
20360         * exceptions-sparc.c (throw_exception): fix typo
20361
20362 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20363
20364         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20365         set tree->dreg correctly with tls. Allow any
20366         register to be used.
20367
20368         * mini-x86.c (read_tls_offset_from_method): add new code
20369         generation pattern seen with GCC.
20370
20371
20372 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20373
20374         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20375         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20376         exceptions-sparc.c: fix some performance issues in exception
20377         handling and setting of the stack trace for exceptions that were
20378         already thrown.
20379
20380 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20383         x86 backend.
20384         
20385         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20386         registers.
20387
20388 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20389
20390         This patch inlines tls access, when possible.
20391         
20392         * mini.h: new arch functions for TLS intrinsics.
20393         All platforms updated with a stub.
20394
20395         * mini.c: use the new intrinsics
20396
20397         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20398         arch specific intrinsic for tls variables
20399
20400 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20403         under windows.
20404
20405 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20406
20407         * mini.c: thread local allocation
20408
20409 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20412
20413         * Makefile.am: Link against the static version of libmonogc.
20414         
20415         * Makefile.am: Link the static versions of the convenience libraries
20416         into the mono executable.
20417
20418         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20419
20420 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20423         on integer overflow.
20424
20425         * mini-amd64.c: Reorganize function call code.
20426
20427         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20428
20429 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20430
20431         * inssel-x86.brg: use xor eax,eax.
20432         
20433         * basic.cs: new tests
20434
20435 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20438         in exception throwing code.
20439         
20440 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20441
20442         * inssel-x86.brg: use xor esi,esi.
20443
20444 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20447         can trace methods compiled during mini_init () too.
20448
20449         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20450         CEE_CONV_U4.
20451
20452 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20453
20454         * Makefile.am: static link on x86 (r=zoltan)
20455
20456 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20459         code since it causes some programs to fail.
20460
20461 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20464
20465 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20466
20467         * mini.c: ovfops_op_map - add STACK_OBJ case for
20468         CONV_I 
20469         * basic.cs: add test_0_pin_string as test
20470         case for above.
20471
20472 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20473
20474         * Makefile.am: build C# if srcdir != builddir
20475
20476 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20477
20478         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20479         fall-through blocks.
20480
20481 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20482
20483         * driver.c: enable loop by default again and include abcrem in -O=all.
20484
20485 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * iltests.il: Add some localloc tests.
20488
20489         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20490
20491         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20492         Fixes #62574.
20493
20494         * inssel-amd64.brg: Add some optimizations.
20495
20496         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20497         for gcc-3.4.
20498
20499         * Makefile.am: Statically link mono against libmono on AMD64.
20500         
20501         * mini-amd64.c inssel-amd64.brg: Optimizations.
20502
20503 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20506
20507         * tramp-amd64.c: Patch calling code in trampolines.
20508
20509 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * mini-amd64.c: pinvoke struct passing fixes.
20512
20513 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20514
20515         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20516         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20517
20518 2004-08-05  Duncan Mak  <duncan@ximian.com>
20519
20520         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20521         CEE_LDELEM_ANY.
20522
20523 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20524
20525         * mini-amd64.c (emit_move_return_value): Move return value for normal
20526         calls too.
20527
20528 2004-08-05  Martin Baulig  <martin@ximian.com>
20529
20530         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20531         `type->type'; just modify `type' itself when dealing with enums
20532         and generic instances.
20533         (check_call_signature): Make `simple_type' a `MonoType *'.
20534
20535 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * mini.c: Use OP_PADD to add offsets to addresses.
20538
20539         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20540
20541 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20542
20543         * mini-sparc.c (mono_arch_emit_epilog): fix check
20544         for folding last op into restore instruction
20545
20546 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20549         helper methods using the code manager.
20550         
20551         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20552
20553         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20554
20555 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20556         
20557         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20558           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20559
20560         * mini-s390.c: fix tail processing
20561
20562 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20563
20564         * mini-ppc.c: mul.ovf.un exception name fix.
20565
20566 2004-08-03  Martin Baulig  <martin@ximian.com>
20567
20568         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20569         instances; before jumping to `handle_enum', also modify `ptype'.
20570
20571 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20572
20573         * cpu-sparc.md: fcall maximal length too small.
20574
20575 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20576
20577         * mini-amd64.c mini.h: Add initial support for passing/returning 
20578         structures to/from pinvoked methods.
20579
20580 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20581
20582         * mini-ppc.c: reg allocator fix.
20583
20584 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20585
20586         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20587
20588         * inssel.brg: Optimize memset on 64 bit machines.
20589
20590         * mini-amd64.c: Fix some vararg cases.
20591
20592 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20593
20594         * mini-s390.c: Corrected macro in emit_float_to_int
20595
20596         * s390-abi.cs: Tests to exercise the s390 ABI
20597
20598 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20599
20600         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20601         caller saved regs.
20602
20603         * basic.cs: Add a test for add.ovf.un.
20604
20605 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20606
20607         * mini-sparc.c: add case for OP_IDIV_UN
20608
20609 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20610
20611         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20612         
20613         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20614
20615 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20616
20617         * basic.cs: regression tests.
20618
20619         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20620         regressions.
20621
20622 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20623
20624         * basic.cs: Add a new test.
20625
20626         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20627         and AOT. Various fixes and optimizations.
20628
20629         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20630
20631 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20632
20633         * mini-ppc.c: make sure temp regs are not used for global reg
20634         allocation.
20635
20636 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20637
20638         * cpu-sparc.md: conv_i8 fix for 64bits
20639
20640         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20641
20642 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20643         
20644         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20645         add opcode for cmp BYTE PTR [eax], imm.
20646
20647         * inssel.brg: Make memcpy and memset takes bases.
20648
20649 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * *-amd64.*: More AMD64 work.
20652         
20653 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20654
20655         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20656         add a compare-not-equal opcode.
20657         
20658 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20659
20660         * mini.c: Use mono_init_from_assembly instead of mono_init.
20661         
20662 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20663
20664         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20665
20666         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20667
20668         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20669
20670         * inssel.brg: 64 bit fixes.
20671
20672         * mini.h (MonoCallInst): Add some AMD64 specific data.
20673
20674         * mini.h: Add some OP_P opcodes.
20675
20676 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20677
20678         * basic.cs: tests for 61797 and 61740
20679
20680 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20681
20682         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20683         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20684
20685 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20688
20689         * *-amd64*.*: Ongoing AMD64 work.
20690
20691 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20692
20693         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20694
20695         * *-amd64*: Ongoing AMD64 work.
20696
20697         * mini-arch.h: Add AMD64 support.
20698
20699         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20700
20701         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20702
20703         * mini-ops.h: Add new opcodes.
20704
20705         * Makefile.am: Add AMD64 support.
20706
20707         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20708         rules into the inssel-long*.brg files.
20709
20710         * *-amd64.*: Add beginnings of AMD64 backend.
20711
20712 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20713
20714         * mini.c (print_dfn): commenting out the code that prints
20715         the cil. With -O=deadce, this makes -v -v crash.
20716         
20717         * cpu-pentium.md: make checkthis have a length of 2
20718
20719 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20720
20721         * mini-sparc.h: fix implementations of __builtin
20722         functions for Sun compiler for V9.
20723
20724 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20725
20726         * mini.c: use the new stelem.ref wrapper
20727         * exceptions.cs, arrays.cs: new stelem.ref tests
20728
20729 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20730
20731         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20732         new XSP should work with these changes).
20733
20734 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20735         
20736         * inssel-{long32,x86,}.brg: trivial optimizations.
20737         
20738 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20739
20740         * mini.c: load value when emitting box operation in
20741         constrained calls.
20742
20743 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20744
20745         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20746         is one byte shorter than cmp DWORD PTR [eax], 0.
20747
20748 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20749
20750         * inssel-ppc.brg: arguments on the stack are always
20751         relative to the stack pointer (spotted by Neale Ferguson).
20752
20753 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20754
20755         * exceptions-x86.c: delay appending the method name to the trace until
20756         after mono_jit_info_table_find is called, as this gets the real
20757         MonoMethod.
20758
20759 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20760
20761         * aot.c: register roots
20762
20763 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20764
20765         * aot.c : I could just use PLATFORM_WIN32 flag.
20766
20767 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20768
20769         * aot.c : Reverting the previous fix. This time it broke linux build.
20770
20771 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20772
20773         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20774
20775 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20776
20777         * mini.c (handle_stack_args): Remove some more debugging code.
20778         
20779         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20780
20781         * driver.c mini.h aot.c: Allow additional options to be specified with
20782         --aot and pass them to mono_compile_assembly.
20783
20784         * aot.c: Add experimental code to AOT compile all loaded assemblies
20785         on demand and save the code into a cache in the filesystem.
20786
20787         * aot.c: Add support for more wrapper methods.
20788         
20789         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20790         58863.
20791
20792         * cpu-*.md: Remove removed opcodes.
20793
20794         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20795         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20796         related icalls to marshal.c.
20797
20798 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20799
20800         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20801
20802         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20803
20804         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20805
20806 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20807         * liveness.c: If liveness is recomputated we need to reset the information
20808         for each variable. This way, if the liveness range has been narrowed
20809         by optimizations that happened after the last computation, we can return
20810         a smaller range.
20811         
20812         For example, if you have
20813         
20814         {
20815                 int i = 0;
20816                 
20817                 // Tons of code that does not affect i
20818                 
20819                 i = foo ();
20820                 ...
20821         }
20822         
20823         i = 0 is dead code and will be removed by SSA. However, when
20824         linear scan gets to the code, i will still appear to be live
20825         throughout the entire block. This prevents good register allocation.
20826
20827 2004-07-06  Martin Baulig  <martin@ximian.com>
20828
20829         * debug-mini.c (mono_debug_init_method): Allow
20830         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20831         (mono_debug_add_icall_wrapper): New method.
20832
20833         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20834
20835 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20838         optimization.
20839
20840 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20841
20842         * aot.c (mono_aot_load_method): Fix loading of debug info.
20843
20844 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * aot.c: Add logging support.
20847
20848 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20849
20850         * mini.h: Add prototype for mono_print_method_from_ip.
20851
20852         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20853
20854         * inssel.brg: 64 bit fixes.
20855
20856         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20857         inssel-long32.brg.
20858
20859         * Makefile.am: Add SPARC64 support.
20860
20861 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20862
20863         * aot.c: Fix alignment problems on 32 bit platforms.
20864
20865 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20866
20867         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20868         SPARC64.
20869
20870         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20871         problems.
20872
20873         * mini.h: Bump AOT file version. Some 64 bit fixes.
20874
20875 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * inssel-sparc.brg: Add new rule to avoid register moves.
20878
20879         * inssel.brg: Add ldind_to_load_membase helper function.
20880
20881 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20882
20883         * mini.c: OffsetToStringData intrinsic.
20884         
20885 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20886
20887         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20888
20889         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20890         regression tests.
20891
20892         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20893 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20894
20895         * mini.c: reinstated mono_compile_get_interface_var()
20896         on x86, too, since the change breaks the Gtk# build there as well.
20897
20898 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20899
20900         * driver.c: remove loop from the default optimizations: it seems to
20901         interact badly with some of the other options (see bug #60613).
20902
20903 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20906         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20907
20908 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20909
20910         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20911         vararg-using methods.
20912
20913 2004-06-21  Martin Baulig  <martin@ximian.com>
20914
20915         * mini/mini-exceptions.c
20916         (mono_handle_exception): Added `gpointer original_ip' argument.
20917         After calling mono_unhandled_exception(), call
20918         mono_debugger_unhandled_exception() and if that returns true,
20919         restore the context and return.
20920
20921 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20922
20923         * mini-ppc.c: prefer the use of relative branches so
20924         they won't need to be patched in aot code (patch from Patrick Beard).
20925
20926 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20927
20928         * aot.c: patch from Patrick Beard to make the output assembly
20929         more correct for the MacOSX assembler. Small tweak to
20930         generate sane images on Linux/PPC, too.
20931
20932 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20933
20934         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20935         case until bug #59509 is fixed (shows up in #60332).
20936
20937 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20938
20939         * mini.c: make sure the needed wrappers are compiled, too, with
20940         precomp.
20941
20942 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20943
20944         * driver.c: remove NPTL reference in --version output.
20945
20946 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20947
20948         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20949         generate valid assembly for the Mach-O assembler.
20950
20951 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20952
20953         * driver.c: don't include abcrem in the all optimization specifier
20954         since it slows down jit compilation too much for now.
20955
20956 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20957
20958         * mini.c: use BIGMUL only if both operands have the same signage.
20959         * iltests.il: Test for bug 60056. (errors related to signage in
20960         BIGMUL).
20961
20962         r=lupus.
20963
20964 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20965
20966         * mini.c, aot.c: memory leak fixes.
20967
20968 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20969
20970         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20971
20972 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20973
20974         * Makefile.am: remove the -static hack completely, it links in
20975         statically glib as well.
20976
20977 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20978
20979         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20980         * exceptions.cs: make it compile with new mcs/csc.
20981
20982 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20983         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20984         and added relevant test case.
20985
20986 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20987
20988         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20989         regressions in gtk-sharp.
20990
20991 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * exceptions.cs: New regression tests.
20994
20995         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20996
20997 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20998
20999         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21000
21001 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21004
21005         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21006
21007 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21008
21009         * mini.c (mono_jit_runtime_invoke): Init class in this
21010         method instead of trusting mono_jit_compile_method to
21011         do the work (because wrappers can be in object class)
21012
21013 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21016
21017         * basic-long.cs: New regression test.
21018
21019 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21020
21021         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21022         and div/rem checks.
21023
21024 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21025
21026         * Makefile.am: fix miguel's change to build mono statically against
21027         libmono (track build dependencies).
21028
21029 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21030
21031         * cfold.c: Some glib versions do not have G_MININT32.
21032
21033 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21034
21035         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21036         with precision of tan, atan, sin and cos, and implemented related
21037         regressions tests (fixes bug 54467, but one new problem appeared and
21038         is not fixed yet).
21039
21040 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21041
21042         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21043
21044         * exceptions.cs: Add test for constant folding && division by zero.
21045
21046         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21047         since driver.c is in libmono too, so the optimization was useless.
21048
21049         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21050         variable to driver.c so the compiler can emit more efficient code to
21051         access them.
21052
21053 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21054
21055         * Makefile.am: don't distribute generated inssel.[ch] files.
21056
21057 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21058
21059         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21060         into the default appdomain. Fixes #58707.
21061
21062         * jit-icalls.c: Remove the broken approximation for truncl, doing
21063         no conversion is better.
21064
21065         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21066         Fixes #58863.
21067
21068 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21069
21070         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21071         of the mcrxr instruction which is not available on some processors
21072         even if it's documented to be. Implement add and sub overflow correctly
21073         (still not complete for long unsigned). Speed up icalls a bit.
21074
21075 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21076
21077         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21078         we run .cctor in the current domain instead of target_domain.
21079         
21080         Fixes bug #58558, .cctor not being called in -O=shared.
21081
21082 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21083
21084         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21085
21086 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21087
21088         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21089         which can be done with an imm8, do it that way.
21090         (mono_arch_output_basic_block): ditto for a jmp
21091         (mono_arch_emit_prolog): Computate maximum offset of a label.
21092
21093 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21094
21095         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21096         now tries to allocate prefered physical reg's for virtual
21097         regs. This reduces the number of emited spills/loads with
21098         20-30% on our core assemblies.
21099
21100 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21101
21102         * jit-icalls.c: truncl() is not needed and trunc() is
21103         the correct thing to do anyway (bug #58287).
21104
21105 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21108         if available.
21109
21110 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21111
21112         * driver.c: enable loop optimizations by default.
21113
21114 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21115
21116         * mini-x86.c: fix calc of max loop size when aligning loops start.
21117
21118 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21119
21120         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21121         the stack.
21122
21123 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21126         should set carry.
21127
21128         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21129
21130         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21131         
21132         * mini.c (inline_method): Allways inline some wrappers even if the cost
21133         is too large. Fixes #58785.
21134
21135         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21136         
21137 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21138
21139         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21140         (crichton@gimp.org). Beginning of support for sparc/linux.
21141
21142         * mini-sparc.c: Optimize retrieval of LMF address.
21143
21144 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21145
21146         * exceptions-ppc.c:  handle alloca in methods with clauses.
21147
21148 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21149
21150         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21151
21152 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21153
21154         * mini.c: Delegate most of the abort signal work to 
21155           mono_thread_request_interruption, which also handles Stop and Suspend
21156           states.
21157
21158 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21161         supports the save/restore lmf opcodes.
21162
21163 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21164
21165         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21166         by gcc-3.4 as well.
21167
21168         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21169
21170 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21173         methods which contain array accesses.
21174
21175         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21176         boundaries. Fixes #58537.
21177
21178         * iltests.il: Add regression test for #58537.
21179
21180 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21181
21182         * mini-x86.c (mono_arch_local_regalloc): Last part of
21183         fix for bug #58633 (releasing register to early).
21184
21185 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21186
21187         * basic-long.cs: Add new regression test.
21188
21189 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21190
21191         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21192         register too early on the chain.
21193
21194 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21195
21196         * mini.c (create_helper_signature): Use a helper function to reduce
21197         the code which needs to be written. Also set the calling convention of
21198         icalls on windows. Fixes #57840.
21199
21200 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21201
21202         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21203         exceptions-ppc.c: added helper function to get the instruction address
21204         from a signal handler context.
21205
21206 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21207
21208         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21209         from gonzalo.
21210
21211 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21212
21213         * helpers.c: Add new env variable to pass args to objdump.
21214         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21215
21216 2004-05-17  Radek Doulik  <rodo@ximian.com>
21217
21218         * Makefile.am (common_sources): added abcremoval.h so it get
21219         disted and daily mono packages on go-mono.com will build again
21220
21221 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21222
21223         * abcremoval.c: Fixed coding style, added copyright header.
21224
21225         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21226
21227         * mini.h: Added prototype for abc removal main function.
21228
21229         * build_relations_propagation_table.pl: Added copyright header.
21230
21231 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21232
21233         * basic-long.cs: reg test for complex ceq_long bug.
21234
21235 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21236
21237         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21238         reg in long and clob case (bug #58343). Fixed/added comments.
21239
21240 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21241
21242         * mini.c (mono_jit_runtime_invoke): Follow new convention
21243         of calling the invoke method with an function pointer.
21244
21245 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * ChangeLog: Fix author of memory leak patch.
21248
21249 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21250
21251         * Makefile.am: fix make dist as well...
21252
21253
21254 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21255
21256         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21257         on archs where pointers are 4 bytes long.
21258
21259         * Makefile.am: Added abcremoval.c source file.
21260
21261         * abcremoval.c: Added abcremoval.c.
21262
21263         * abcremoval.h: Added abcremoval.h.
21264
21265         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21266
21267         * inssel.brg: Enabled bounds check removal.
21268
21269         * mini.c: Added support for abcrem optimization.
21270
21271         * mini.h: Added abcrem optimization label.
21272
21273         * driver.c: Added support for abcrem optimization.
21274
21275         * propagated_relations_table.def: Added propagated_relations_table.def.
21276
21277 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21278
21279         * mini.c, cfold.c: fix style.
21280
21281 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21282
21283         * mini.c: handle issue with the low-level implementation of
21284         some long opcodes (bug #54209).
21285
21286 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21287
21288         * basic.cs: test for my new cmov stuff.
21289
21290 2004-05-13      Patrik Torstensson
21291
21292         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21293         opt and added peephole documentation.
21294
21295 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21296
21297         * tramp-ppc.c: rewrote the generic trampoline code.
21298
21299 2004-05-11      Patrik Torstensson
21300
21301         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21302
21303 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21304
21305         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21306
21307         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21308         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21309
21310         * mini.c: Add new icalls for AsAny marshalling.
21311
21312 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21313
21314         * tramp-ppc.c, mini-ppc.c: more cleanups.
21315
21316 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21317
21318         * mini.c: no warnings.
21319
21320 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21321
21322         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21323
21324 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21325
21326         * mini.c: In the thread abort signal handler, if the thread is in the
21327         process of being stoped, don't throw the Abort exception, just stop the
21328         thread.
21329
21330 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21331
21332         * tramp-ppc.c: removed old code.
21333
21334 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21335
21336         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21337         do some simple speed optimizations on ppc.
21338
21339 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21340
21341         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21342         and large offsets in load/store.
21343
21344 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21345
21346         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21347         it causes regressions.
21348
21349 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21352         support.
21353
21354 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21355
21356         * jit-icalls.c: remove warnings.
21357         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21358         speedups for unsafe code.
21359
21360 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21361
21362         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21363
21364 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21365
21366         * basic-calls.cs: Add new regression test.
21367
21368         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21369         more portable.
21370
21371         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21372
21373         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21374         is no longer used.
21375
21376 2004-05-06      Patrik Torstensson
21377
21378         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21379         long reg allocation in any reg (not only eax:edx) and implemented 
21380         long shl/shr ops in asm instead of helpers.
21381
21382 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21383
21384         * mini-sparc.h: Fix warnings.
21385
21386         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21387         stack.
21388
21389         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21390         separate statement for clarity.
21391
21392         * mini-sparc.c: Update status.
21393
21394 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21395
21396         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21397         here.
21398
21399 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21400
21401         * inssel-ppc.brg: another small pre-release workaround:
21402         we don't do overflow detection for long_sub_un.
21403
21404 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21405
21406         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21407         (also works around a weird ppc bug: 57957).
21408
21409 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21410
21411         * tramp-ppc.c: trampoline fixes.
21412
21413 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21414
21415         * mini-ppc.c: fixed typos.
21416
21417 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21418
21419         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21420         at the top of the stack. Fixed typos. Use a frame registers
21421         for all the methods with exception clauses.
21422
21423 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21424
21425         * exceptions-ppc.c: restore fp registers.
21426
21427 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21428
21429         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21430         order from the stack top (moved the stack room to save the
21431         return value for trace after the param area). Fixed corruption
21432         in restoring registers on unwind.
21433
21434 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21435
21436         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21437
21438 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21439
21440         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21441         and prolog/epilog for methods that use it. Allow
21442         enough param area room for varargs methods. Fix miguel's
21443         breakage in exception handling.
21444
21445 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21446
21447         * Makefile.am: run genmdesc only on current arch.
21448
21449 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21450
21451         * exceptions-x86.c:
21452         * mini-x86.h: fix the build on windows.
21453
21454 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21455
21456         * 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.
21457
21458         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21459
21460         * mini-exceptions.c: New file.
21461         
21462         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21463         Move some parts of the x86 exception handling code to an 
21464         arch-independent file so it can be shared with other ports.
21465
21466 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21467
21468         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21469
21470 2004-04-26  David Waite  <mass@akuma.org>
21471
21472         * driver.c: remove comma from end of enumeration declaration
21473
21474 2004-04-26  Jackson Harper  <jackson@ximian.com>
21475
21476         * driver.c: parse config file before loading first assembly. This
21477         allows the user gac to be enabled/disabled. 
21478         
21479 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21480
21481         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21482         simpler mechanism: we do not care what is encoded initially
21483         (branch absolute or relative), we care about the code and its
21484         target.  I kept the old code for reference for now.
21485
21486         The new code tries first to determine if the jump is anywhere in
21487         the -/+32 absolute meg range, if it succeeds, it encodes using the
21488         absolute branch;  If not, it tried to find something in the
21489         relative range, if not, it uses the handle_thunk code. 
21490
21491 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21492
21493         * exceptions-ppc.c: use the correct ip register on macosx.
21494
21495 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21496
21497         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21498
21499 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21500
21501         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21502         Raise exception on integer divide by zero by hand since the hw
21503         doesn't support it. Handle NaNs in FP compares.
21504
21505 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21506
21507         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21508         code reducing duplication between the platforms and enabled
21509         signal exception handling (on linux for now).
21510
21511 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21512
21513         * exceptions-ppc.c: more macosx support.
21514
21515 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21516
21517         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21518
21519 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21520
21521         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21522
21523 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21524
21525         * iltests.il: more tests.
21526
21527 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21528
21529         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21530         vars as well.
21531
21532 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21533
21534         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21535
21536 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21537
21538         * liveness.c: Mark variables as volatile in all basic blocks reachable
21539         from exception clauses.
21540
21541 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21542
21543         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21544         inlining.
21545
21546 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21547
21548         * iltests.il, basic.cs: more tests for regalloc.
21549
21550 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21551
21552         * iltests.il: Some tests for register allocation modifications
21553         I have locally.
21554
21555 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * exceptions.cs: Add regression test for bug #56782.
21558
21559         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21560         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21561         the beauty of fixing the same thing in 5 different files...
21562
21563 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21566         methods.
21567
21568 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21569
21570         * mini.c: Add support for STRWLPARRAY marshalling convention.
21571
21572 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21573
21574         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21575         to init the context to setup the regs pointer).
21576
21577 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21578
21579         * exceptions-ppc.c: more exceptions work.
21580
21581 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21582
21583         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21584         not allowed.
21585
21586 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21587
21588         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21589         can use the memory directly.
21590
21591         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21592
21593         add x86_add_membase, x86_sub_membase, x86_mul_membase
21594
21595 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21596
21597         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21598         GENERAL_REGS they were also hardcoded for all PPC ports.
21599
21600         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21601
21602         Remove hard-coded limit for floating point registers, use
21603         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21604
21605         Notice that in MacOS X calling conventions you can fit a lot more
21606         floating point values in registers, so I should update the PInvoke
21607         test to excercise the passing of floating point values on the
21608         stack (currently broken).
21609         
21610 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21611
21612         * tramp-ppc.c (create_trampoline_code): Added
21613         JUMP_TRAMPOLINE_SIZE. 
21614         (ppc_magic_trampoline): Follow the pattern from
21615         x86_magic_trampoline: if code is set to zero, return. 
21616         (create_trampoline_code): Always pass MonoMethod to the jump
21617         trampoline, before it was passing a null.
21618         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21619         share the code with mono_arch_create_jit_trampoline. 
21620
21621         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21622         implemented.
21623         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21624         implemented.  
21625
21626         * cpu-g4.md: Added length for jmp instruction, the worst case
21627         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21628         for save_lmf).
21629
21630 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21633
21634 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21637         before each IL instruction.
21638
21639         * mini.c (CEE_BOX): Fix warnings.
21640
21641 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21642
21643         * mini.c: removed a few unused vars and extra whitespace.
21644
21645 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21646
21647         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21648         checks.
21649         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21650         index.
21651         (OP_GETCHR): use the above
21652         (CEE_LDELEMA): use the above.
21653
21654         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21655         version of the generic impl.
21656         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21657         (CEE_LDELEMA): use the above.
21658
21659 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21660
21661         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21662         Fixes #56317.
21663
21664         * iltests.il: Added new regression test for #56317.
21665
21666 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21667
21668         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21669         under NetBSD. Fixes #56450.
21670
21671         * liveness.c (update_gen_kill_set): Fix previous patch.
21672
21673 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21674
21675         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21676
21677 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21680         ldsfld and ldsflda.
21681
21682         * inssel-sparc.brg: Add more optimizations.
21683
21684         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21685
21686 2004-04-01  Martin Baulig  <martin@ximian.com>
21687
21688         * mini.c (handle_box): New static function; moved the
21689         implementation of CEE_BOX here.
21690         (mono_method_to_ir): Added `constrained_call' variable.
21691         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21692         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21693         mono_method_get_constrained() to get the method.
21694
21695 2004-04-01  Martin Baulig  <martin@ximian.com>
21696
21697         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21698         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21699         (mono_method_to_ir): We don't need these macros anymore since
21700         mono_class_get_full() already takes care of it. 
21701
21702 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21703
21704         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21705         use @function (as doesn't accept #function here) and check the return
21706         value of system and stop if fails.
21707
21708 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21709
21710         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21711
21712 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21713
21714         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21715
21716         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21717
21718         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21719         #56223.
21720
21721         * basic-long.cs: Add test for negation of Int64.MinValue.
21722
21723 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21724
21725         * mini-sparc.c: Update status.
21726
21727         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21728
21729         * exceptions-sparc.c: Fix return value in filters.
21730
21731         * inssel-sparc.brg: Fix register allocation in some rules.
21732
21733 2004-03-28  Martin Baulig  <martin@ximian.com>
21734
21735         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21736         if neccessary.  
21737
21738 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21739
21740         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21741         
21742         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21743         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21744         remove unused conv_u4 opcode.
21745
21746         * mini-x86.c: Remove valgrind workaround since it slows down things
21747         even when mono is not run under valgrind.
21748
21749 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * mini-sparc.c: Update status.
21752
21753         * inssel-sparc.brg: Add some optimizations.
21754
21755         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21756         future delay slot filling. Add support for varargs, tail calls and JMP.
21757
21758         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21759         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21760
21761         * inssel.brg: Fix register allocation in OP_ARGLIST.
21762
21763         * inssel.brg: Fix warnings.
21764
21765 2004-03-25  Martin Baulig  <martin@ximian.com>
21766
21767         * mini.c (inflate_generic_field): Removed.
21768         (mini_get_method): Removed, use mono_get_method_full(),
21769         (mini_get_class): Removed, use mono_class_get_full().
21770         (mono_method_to_ir): Pass our generic context to
21771         mono_field_from_token().        
21772
21773 2004-03-25  Martin Baulig  <martin@ximian.com>
21774
21775         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21776         of a `MonoMethod *'.
21777         (mini_get_method): Take a `MonoGenericContext *' instead
21778         of a `MonoMethod *'.
21779         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21780         a new local variable called `generic_context' which holds the
21781         current `MonoGenericContext *'; use it to lookup things.
21782
21783 2004-03-24  Martin Baulig  <martin@ximian.com>
21784
21785         * mini.c (mini_get_class): New static method; if we're inside a
21786         generic instance, inflate the class if neccessary.
21787         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21788
21789 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21790
21791         * iltests.il: New regression test for #55976.
21792
21793         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21794         #55976.
21795
21796 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21799         output.
21800
21801 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * liveness.c: Consider SSA stores as well as loads when making vars
21804         volatile.
21805
21806         * exceptions.cs: New regression tests for register allocation.
21807         
21808 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21809
21810         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21811         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21812           domain lock only to protect puntual access to data structures.
21813           Added access lock for sighash, jit_icall_hash_name, 
21814           jit_icall_hash_addr and domain->code_mp.
21815
21816 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * driver.c: Print SIGSEGV handling method.
21819
21820         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21821
21822         * mini.c (setup_jit_tls_data): Handle case when this is called
21823         multiple times for a thread.
21824
21825         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21826         is different from fbxx_un. Fixes #54303. Also use constants instead of
21827         magic numbers in a lot of places.
21828
21829 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21830
21831         * exceptions.cs: Fix cctor test when --regression is used.
21832
21833 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21834
21835         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21836         for Linux/ppc.
21837
21838 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21839
21840         * inssel-ppc.brg: fixed register assignments for some rules.
21841
21842 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * exceptions.cs: Add test for exceptions in static constructors.
21845
21846         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21847         static constructors outside the domain lock. Fixes #55720.
21848
21849 2004-03-17  Martin Baulig  <martin@ximian.com>
21850
21851         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21852         (inflate_generic_field): Take the `MonoMethod *' instead of the
21853         `MonoClass *' and added support for generic method.
21854         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21855         have a `field->parent->gen_params', only inflate the field if it's
21856         an open constructed type.
21857
21858 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21861         exception object instead of the preconstructed ones.
21862
21863 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21864
21865         * mini.c: reverted changed to sigsegv_signal_handler commited
21866         accidentally in the previous patch.
21867
21868 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21869
21870         * mini.c:
21871         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21872         running --aot with an old assembly.
21873
21874 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21877         point values.
21878
21879         * mini-sparc.c: Add support for v9 branches with prediction.
21880
21881 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21882
21883         * mini.c (mini_init): #warning is GNUC only
21884
21885         * mini-sparc.h: implement __builtin_frame_address
21886         and __builtin_return_address for Sun C compiler
21887
21888 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21891
21892 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * basic-calls.cs: Add test for unaligned byref long argument passing.
21895
21896         * mini-ops.h: Add sparcv9 compare and branch instructions.
21897
21898         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21899         v9 instructions if we have a v9 cpu.
21900
21901         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21902         registers for global allocation.
21903
21904         * exceptions-sparc.c: Fixes.
21905         
21906 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21907
21908         * liveness.c (mono_analyze_liveness): Optimized version.
21909
21910         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21911
21912         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21913         sparc work.
21914
21915         * basic-float.cs basic-calls.cs: New regression tests.
21916
21917 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21920         sigaltstack implementation.
21921
21922         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21923         
21924         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21925         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21926
21927 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21928
21929         * mini.c: Fix warnings.
21930         
21931         * mini.c (mono_resolve_patch_target): New function which contains the
21932         arch independent part of the patching process.
21933
21934         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21935         patching code to a separate function.
21936
21937 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21938
21939         * mini.c (add_signal_handler): ifdef out on Windows
21940
21941 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21942
21943         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21944         cpu-sparc.md: Add exception handling support + other fixes.
21945
21946         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21947         typed GC detection in --version.
21948
21949         * basic.cs exceptions.cs: New regression tests.
21950
21951         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21952         the arch specific code can store data during a compilation.
21953
21954         * mini-ops.h: Add OP_SETFRET.
21955
21956         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21957         function, register a separate icall for each arity, so the icalls can
21958         get a wrapper.
21959         
21960         * mini.c (mono_print_tree): Print negative offsets in a more readable
21961         form.
21962         
21963         * mini.c: Make signal handling work on sparc.
21964         
21965         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21966
21967         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21968
21969         * jit-icalls.c: Emulate truncl by aintl on solaris.
21970
21971         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21972
21973 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21974
21975         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21976
21977 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21978
21979         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21980         a MarshalByRef type, inline a method that performs the check, taking into
21981         account that the object can be a proxy. Also implemented tow new opcodes:
21982         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21983         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21984         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21985
21986 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21987
21988         * mini-ppc.c: if a relative branch displacement is too big
21989         but it points to and area reachable with an absolute branch, 
21990         avoid the thunks.
21991
21992 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21993
21994         * mini.c: optimize small copies in cpblk.
21995
21996 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * basic-calls.cs basic-float.cs: New regression tests.
21999
22000         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22001         negative offsets from %fp. Implement localloc. Fix local register 
22002         allocation. Fix the case when the this argument needs to be saved to
22003         the stack. Implement some missing opcodes.
22004
22005 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22006
22007         * mini.c (mini_method_compile): Reenable global regalloc in methods
22008         with exception handlers.
22009
22010         * linear-scan.c (mono_varlist_sort): Fix warning.
22011
22012         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22013
22014         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22015         regalloc costs.
22016
22017         * liveness.c: Make all variables uses in exception clauses volatile, to
22018         prevent them from being allocated to registers. Fixes #42136.
22019
22020 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22023         causes regressions.
22024
22025         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22026         argument to mono_arch_regalloc_cost.
22027
22028         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22029         precisely.
22030
22031 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22034         Make the cost of allocating a variable to a register arch dependent.
22035
22036         * basic-calls.cs: Fix compilation of tests.
22037         
22038         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22039         helper function to cut back on the number of #ifdefs needed.
22040
22041         * mini-ppc.c: Fix compilation.
22042
22043         * basic-calls.cs: New regression tests.
22044
22045         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22046
22047         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22048         of l0 since that is callee saved.
22049
22050         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22051         to virtual calls.
22052
22053         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22054         of delay instruction.
22055
22056         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22057
22058         * mini.h (MonoCallInst): Add 'virtual' flag.
22059
22060         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22061
22062 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22063
22064         * *.cs: New regression tests.
22065
22066         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22067         work.
22068
22069         * mini.c (mono_runtime_install_handlers): Fix build.
22070
22071         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22072         'signal_stack_size' members.
22073
22074         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22075         alternate signal stack.
22076
22077         * exceptions-x86.c: Add stack overflow handling.
22078
22079         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22080         functions to arch independent code.
22081
22082         * mini.c (mono_print_tree): Print more detailed info for load_membase
22083         opcodes.
22084         
22085 2004-02-23  Martin Baulig  <martin@ximian.com>
22086
22087         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22088
22089 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22090
22091         * mini-x86.c: fixed reg allocation for div/rem.
22092
22093 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22094
22095         * driver.c (mono_main): Report some configuratio options on --version.
22096
22097 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22098
22099         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22100         low in the address space. Correctly flush memory in thunks where we
22101         output native code.
22102
22103 2004-02-20  Martin Baulig  <martin@ximian.com>
22104
22105         * mini.c (mini_get_method): New static method; inflate all generic
22106         methods and methods in open generic instances.
22107         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22108         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22109
22110 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22111
22112         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22113
22114         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22115
22116 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22117
22118         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22119
22120         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22121         it compile using Sun's compiler.
22122
22123 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * 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.
22126
22127         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22128
22129 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22130
22131         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22132         code.
22133         * mini-ppc.c: handle calls outside of the allowed range with thunks
22134         allocated using the code manager.
22135         * tramp-ppc.c: use the code manager to hold generated native code.
22136         Fixed the magic trampoline to just patch vtable entries.
22137
22138 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22139
22140         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22141         independent file.
22142
22143 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22144
22145         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22146         PPC.
22147
22148         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22149         if we have a working __thread implementation.
22150
22151         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22152         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22153
22154 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22155
22156         * mini-x86.c: Fix compilation under gcc 2.
22157         
22158 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22161         contains a call to the wrapped function.
22162
22163         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22164         OP_<CALL>_IMM opcodes, and use them under X86.
22165         
22166         * mini.c (mono_jit_find_compiled_method): Fix warning.
22167
22168         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22169
22170         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22171
22172         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22173         functionality to mini.c.
22174
22175         * mini.c (mono_create_jump_trampoline): New function to create a jump
22176         trampoline. Return a compiled method instead of a trampoline if it
22177         exists. Add a cache for jump trampolines.
22178
22179         * mini.c (mono_jit_find_compiled_method): New function to return a
22180         compiled method if it exists.
22181
22182         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22183         mono_arch_create_jit_trampoline.
22184
22185         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22186         a jump trampoline. Fixes #52092.
22187         
22188 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22189
22190         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22191         which is not up-to-date. Add check_corlib_version () instead.
22192
22193         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22194         have to call it.
22195         
22196         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22197         since newer valgrind versions do not need it.
22198
22199         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22200         compile a method with a given set of optimizations.
22201
22202         * mini.c: Compile icall wrappers on-demand instead of at startup.
22203
22204         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22205         wrapper for an icall.
22206
22207 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22208
22209         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22210         #54063.
22211
22212         * iltests.il: Add test for non-empty stack before switch instruction.
22213
22214 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * mini.c: Add support for new stringbuilder marshalling conventions.
22217
22218         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22219
22220 2004-02-01  Martin Baulig  <martin@ximian.com>
22221
22222         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22223         in `ginst->mtype_argv'.
22224
22225 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22226
22227         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22228         facilitate grepping.
22229
22230 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22231
22232         * mini.c: fixed buglet in initobj generic implementation for references.
22233
22234 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22235
22236         * Makefile.am: make the version script conditional.
22237         * jit-icalls.c: handle missing truncl().
22238
22239 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22240
22241         * exceptions.cs: Add more tests for double->int conversion.
22242
22243         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22244         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22245
22246 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22247
22248         * driver.c: make --verbose --version emit an error
22249         if the loaded corlib doesn't match the runtime version.
22250
22251 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22252
22253         * mini-ppc.h: export ppc_patch().
22254         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22255         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22256         on par or better than on MacOSX.
22257
22258 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22259
22260         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22261         mono_lookup_pinvoke_call.
22262
22263         * mini-x86.c: Under windows, the default pinvoke calling convention is
22264         stdcall. Fixes #52834.
22265
22266         * mini.c (optimize_branches): Add an upper bound to the number of
22267         iterations to prevent infinite loops on strange loops. Fixes #53003.
22268
22269 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22270
22271         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22272         and ISINST. Fixes #52093.
22273
22274         * objects.cs (test_0_vector_array_cast): New tests.
22275         
22276 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22277
22278         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22279         checking in Array.Set ().
22280
22281         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22282         #52590.
22283
22284         * object.cs (test_0_multi_array_cast): New regression test.
22285
22286 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22287
22288         * exceptions-ppc.c: fix build on Linux/PPC.
22289
22290 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22293         running under valgrind.
22294         (x86_magic_trampoline): Fix build bustage.
22295
22296         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22297         negative values as well. This is needed for the encoding of the line number
22298         info, since sometimes the line numbers are not in increasing order.
22299
22300 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22301
22302         * cpu-pentium.md (localloc): Increase the size of the localloc 
22303         instruction since it is a loop under Win32.
22304
22305         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22306         allocation.
22307
22308 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22309
22310         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22311         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22312         Max Horn (max@quendi.de). Fix file names in comments.
22313
22314 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22315
22316         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22317         avoid stack overflow.
22318         (replace_usage): Avoid uninitialized variable warnings.
22319
22320         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22321         and taking the address of valuetype variables.
22322
22323 2004-01-03  Patrik Torstensson
22324
22325         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22326         for other purposes than FP later on.
22327
22328 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22329
22330         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22331         of tail calls.
22332
22333 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22334
22335         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22336
22337 2003-12-30  Patrik Torstensson <p@rxc.se>
22338
22339         * mini-x86.h: Decreased number of availiable fp regs.
22340         Solves corner cases with FP spilling.
22341
22342 2003-12-23  Patrik Torstensson <p@rxc.se>
22343
22344         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22345         for floating point stack tracking / spilling on x86. 
22346         Fixes bug #49012.
22347         
22348         * basic-float.cs: added float mul overflow test.
22349
22350 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22351
22352         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22353
22354 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22355
22356         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22357         supports for cond branches that overflow the immediate
22358         overflow offset. mcs can compile simple programs.
22359
22360 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22361
22362         * exceptions-ppc.c: exception handling support wip:
22363         finally handlers get run on exception.
22364
22365 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22368         profiling.
22369
22370 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22371
22372         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22373         initial support for stack walking and unwinding.
22374
22375 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * driver.c (mono_main): Make corlib-out-of-sync message more 
22378         descriptive. Also remove verify_corlib call.
22379
22380 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22381
22382         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22383         not overlap with other call's arguments, too.
22384
22385 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22386
22387         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22388         move to arch-specific code the choice of arch-specific
22389         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22390         * mini.c: ensure emulation calls will not interleave
22391         with other calls.
22392
22393 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22394
22395         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22396         the magic trampoline stack frame is dropped before executing
22397         the new method.
22398
22399 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22400
22401         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22402         and integer to fp conversions. Added support for overflowing
22403         arguments on the stack. Reserve a couple more registers as temps.
22404         Added support for aot compilation (as output still needs to be
22405         tweaked, though).
22406
22407 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22408
22409         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22410         Don't overwrite return register in some corner cases.
22411
22412 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22413
22414         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22415         static constructors when AOT compiling.
22416
22417         * driver.c (mono_main): Call mono_check_corlib_version.
22418
22419 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22420
22421         * cpu-g4.md, basic.cs: fixed div target register.
22422
22423 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22424
22425         * mini-ppc.c, basic.cs: shl_imm fix with test.
22426
22427 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22428
22429         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22430         structures by value. Misc fixes.
22431         * objects.cs: more tests.
22432
22433 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22434
22435         * mini-ppc.c: lconv.ovf.i implemented.
22436
22437 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22438
22439         * mini.c:
22440         (mini_init): don't error out if someone already called g_thread_init.
22441
22442 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22443
22444         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22445         to be any type per the spec. Fix abnormal memory usage when
22446         the same object is repeatedly thrown.
22447
22448 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22449
22450         * mini.c: check for overruns in IL code.
22451
22452 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * TODO: Add/remove some todo entries.
22455
22456 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22457
22458         * driver.c (mono_main): Call mono_verify_corlib.
22459
22460 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22461
22462         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22463         This has been moved to mini.c
22464         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22465         type being casted is marshalbyref it could be a proxy, so instead of
22466         emitting the type check code, emit a call to a runtime method that will
22467         perform the check by calling CanCastTo if needed.
22468
22469 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22472         methods with large stack frames under Win32.
22473
22474 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * Makefile.am: Distribute regression tests.
22477
22478         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22479         at the end instead of inserting each variable into the sorted list.
22480
22481         * linear-scan.c (mono_varlist_sort): New helper function.
22482         
22483 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22484
22485         * mini.c: ensure arguments and locals are within bounds.
22486
22487 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22488
22489         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22490         related fixes.
22491
22492 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22493
22494         * mini.c (mono_cprop_copy_values): Fix crash.
22495
22496         * aot.c: Set verbosity back to 0.
22497         
22498 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22499
22500         * regalloc.c: complete memory leak fix by Laurent Morichetti
22501         (l_m@pacbell.net).
22502
22503 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22504
22505         * driver.c (main_thread_handler): Revert the previous patch.
22506
22507         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22508         under valgrind.
22509
22510         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22511         memory from the memory pool.
22512
22513         * driver.c (main_thread_handler): Turn on all optimizations when
22514         --aot is used.
22515
22516         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22517         an array for better performance.
22518
22519         * regalloc.c (mono_regstate_assign): Fix memory leak.
22520
22521         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22522         serialize the debug info.
22523
22524         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22525         debug info from the serialized representation.
22526
22527         * aot.c: Save debug info into the generated file and load it when 
22528         loading a method.
22529
22530         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22531
22532 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22533
22534         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22535         More FP-related fixes.
22536
22537 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22538
22539         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22540         and register allocation buglet. Hello world now runs.
22541
22542 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22543
22544         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22545         * tramp-ppc.c: fixed class init trampoline.
22546         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22547
22548 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22549
22550         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22551         mini.c: more ppc changes/fixes.
22552
22553 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22554
22555         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22556         Also optimize the case when the arguments are the same in the caller 
22557         and in the callee.
22558
22559         * iltests.il: Add tests for tail calls with valuetype arguments.
22560
22561 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22562
22563         * mini-ppc.c: fixes for struct return type.
22564
22565 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22566
22567         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22568         mono_spillvar_offset() to arch-specific code.
22569
22570 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22571
22572         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22573
22574 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22575
22576         * exceptions-x86.c: Fix stack space leaks.
22577         
22578         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22579         registers from the lmf if the method has save_lmf set.
22580
22581 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22584         of icall wrappers into InvokeInDomain, since these are now per-domain.
22585
22586 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22587
22588         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22589         make some opcode emulation and intrinsic ops enabled/disabled 
22590         according to the architecture. More fixes.
22591
22592 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22593
22594         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22595
22596 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22597
22598         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22599         arch-specific handling for 'this' and struct return type to
22600         arch-specific code.
22601
22602 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22603
22604         * aot.c: prevent divide by zero error when reporting (it happened with
22605         Accessibility.dll).
22606
22607 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22608
22609         * mini.h (inst_switch): Remove unused macro.
22610
22611 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22612
22613         * aot.c:
22614         (load_aot_module): free 'info->methods' and 'info' properly. No more
22615         "free(): invalid pointer blah" messages when you have an old aot
22616         compiled assembly.
22617
22618 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22619
22620         * jit-icalls.c, mini.c: Added support for context static fields.
22621
22622 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22623
22624         * mini.c (mono_method_blittable): Methods which set LastError are not 
22625         blittable either. Fixes #51108.
22626         
22627 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22628
22629         * mini.c: flush icache.
22630         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22631
22632 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22633
22634         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22635
22636 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22637
22638         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22639         safe on IA32.
22640
22641         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22642         vararg calls.
22643
22644         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22645
22646 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22647
22648         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22649         instruction when the result is discarded.
22650
22651         * iltests.il (test_0_div_regalloc): New regression test.
22652
22653         * arrays.cs: Fix compilation error.
22654
22655 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22656
22657         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22658         float rules to inssel-x86.brg: sane architectures with FP registers
22659         don't need to implement these rules.
22660
22661 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22662
22663         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22664
22665 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22666
22667         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22668         implementation of 32 bit systems.
22669
22670 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22671
22672         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22673         (Jeroen Zwartepoorte).
22674
22675 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22676
22677         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22678         the caller and the callee matches.
22679         
22680         * mini.c (mono_method_to_ir): Add comment.
22681
22682         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22683         signbit is missing on some platforms.
22684
22685 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22686
22687         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22688
22689         * mini.c (setup_jit_tls_data): Call the new function.
22690         
22691         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22692
22693         * mini-x86.c: Add experimental support for fast access to the lmf
22694         structure under NPTL/Linux 2.6.x.
22695
22696 2003-11-06  Martin Baulig  <martin@ximian.com>
22697
22698         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22699         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22700         the debugger.
22701
22702 2003-11-02  Martin Baulig  <martin@ximian.com>
22703
22704         * mini.c (inflate_generic_field): New static method.
22705         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22706         generic instance and the field is declared in a generic type, call
22707         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22708
22709 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22710
22711         * mini.h mini.c (mono_method_same_domain): New function to return
22712         whenever the caller and the callee are in the same domain.
22713
22714         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22715
22716 2003-10-30  Martin Baulig  <martin@ximian.com>
22717
22718         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22719         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22720         method parameters.
22721         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22722         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22723
22724 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22725
22726         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22727         propagation.
22728
22729         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22730         object here, so it is in the correct appdomain etc.
22731
22732 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22733
22734         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22735         already done.
22736         (mono_method_to_ir): Avoid freeing the type created returned from
22737         mono_type_create_from_typespec, since it is put into an internal cache
22738         by the function. Fixes pointer.exe.
22739
22740         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22741         trampolines for icalls and pinvokes as well. Fixes #33569.
22742
22743 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * mini.c: Update after appdomain changes.
22746
22747         * mini.c (mono_jit_compile_method_inner): Allways compile native
22748         method wrappers in the root domain, since there can only be one
22749         instance of them, whose address is stored in method->info.
22750
22751 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22752
22753         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22754         environment variable. Instead detect automatically whenever running
22755         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22756         valgrind.h.
22757
22758 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22759
22760         * trace.c, trace.h: New files that implement the new trace option
22761         parsing. 
22762
22763         * driver.c: Document new --trace options.
22764
22765         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22766         mini-x86.c: Apply:
22767
22768         -       if (mono_jit_trace_calls)
22769         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22770
22771         * mini.h: prototypes.
22772         
22773 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22774
22775         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22776
22777         * mini.c inssel.brg: Implement typedefbyref opcodes.
22778
22779         * mini.c (mono_jit_compile_method): Remove unused local variable.
22780
22781         * mini.c (mono_jit_compile_method_inner): Ditto.
22782         
22783 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22784
22785         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22786         
22787         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22788
22789 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * mini.c (mono_no_aot): Remove unused global variable.
22792
22793         * mini.c: Thread safety fixes.
22794
22795 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22796
22797         * mini.c (mono_create_class_init_trampoline): Add a lock around
22798         class_init_hash_addr.
22799
22800         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22801         #30073.
22802
22803         * mini.c: Decompose the NEWARR instruction before decomposing its
22804         arguments. Fixes #30073.
22805
22806 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22807
22808         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22809         convention.
22810
22811 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22812
22813         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22814
22815         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22816
22817         * driver.c: Add support for compiling icall wrappers to --compile.
22818
22819 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22820
22821         * inssel.brg: The empty value in class->interface_offsets is -1, not
22822         0. Fixes #49287.
22823
22824 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22825
22826         * objects.cs: New test for 'is' operator on an array of interfaces.
22827
22828 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22829
22830         * tramp-ppc.c: update trampoline code to support jumps
22831         and class initialization.
22832
22833 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22836
22837         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22838
22839         * inssel.brg (OP_UNBOX): Remove unused rule.
22840
22841         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22842         region instead of one for each method. Fixes #47813.
22843
22844 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22845
22846         * exceptions.cs (test_0_nested_finally): New regression test for
22847         nested exception handlers.
22848
22849         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22850
22851         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22852
22853         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22854         inlining.
22855
22856         * mini.c (mono_method_check_inlining): Make the inlining limit 
22857         configurable by an environment variable.
22858         
22859         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22860
22861         * mini.h: Bump AOT file version.
22862
22863         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22864         token, store the image along with the token, since the token might not 
22865         refer to the same image as the method containing the relocation, 
22866         because of inlining.
22867
22868 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * mini.c (mono_precompile_assemblies): New function to compile
22871         all methods in all loaded assemblies.
22872
22873         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22874
22875         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22876         iassign and fassign to int*, since they can contain large negative
22877         values if the register is spilled. Also added some comments. Fixes
22878         #45817.
22879
22880         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22881         under Win32. Fixes #42964.
22882
22883 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22884
22885         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22886
22887         * aot.c: Added support for AOT compiling methods which contain calls
22888         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22889         handled.
22890         
22891         * driver.c (compile_all_methods): Run the compilation in a thread
22892         managed by mono. Fixes #44023.
22893
22894         * mini.c (mono_codegen): Print full method name in verbose output.
22895
22896         * mini-x86.c (mono_arch_patch_code): Fix warning.
22897         
22898         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22899         jumps, since the method we are jumping to might be domain-specific.
22900
22901         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22902
22903 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22904
22905         * inssel.brg: string chars are unsigned.
22906
22907 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * TODO: New todo item.
22910
22911         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22912         which calls mono_runtime_class_init and patches the call site to
22913         avoid further calls.
22914         (mono_arch_create_class_init_trampoline): New arch specific function 
22915         to create a class init trampoline.
22916         (create_trampoline_code): Generalized so it can create
22917         class init trampolines as well.
22918
22919         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22920         (mono_create_class_init_trampoline): New function to create and cache
22921         class init trampolines.
22922         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22923         vtable given the address of a class init trampoline. Used by the
22924         patching process.
22925         (mono_codegen): Generate a call to a trampoline instead of
22926         mono_runtime_class_init in LDSFLD[A].
22927         (mono_codegen): Add relocations for the new trampoline.
22928         
22929         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22930         MONO_PATCH_INFO_CLASS_INIT.
22931
22932         * mini.h: Bump AOT version number.
22933
22934         * aot.c: Create a copy of the loaded code instead of using the original
22935         so methods which call each other will be close in memory, improving
22936         cache behaviour.
22937         
22938         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22939         patch since it breaks the regression tests.
22940         
22941         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22942         for the register saving instruction sequence since the 
22943         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22944
22945 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22946
22947         * TODO: Fix todo item && remove another.
22948
22949 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22950
22951         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22952         previous checkin.
22953
22954         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22955         function of the module.
22956
22957         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22958         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22959         --no-aot command line option.
22960
22961 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22962
22963         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22964         by Bernie Solomon (bernard@ugsolutions.com).
22965
22966         * inssel.brg: Refactor the interface offset table related code into
22967         its separate functions and add support for the AOT case.
22968
22969 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22972         
22973         * aot.c: Added mono_aot_verbose variable and made all debugging
22974         output depend on the value of this variable.
22975
22976         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22977         method_label and info_label.
22978
22979         * mini.h mini-x86.c aot.c: Added a new relocation type 
22980         MONO_PATCH_INFO_IID for klass->interface_id.
22981
22982         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22983         the MonoJitInfo structure.
22984
22985         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22986         a non-root appdomain in shared mode.
22987
22988 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22989
22990         * aot.c: make aot loader less verbose. Remove free of unused variable.
22991
22992 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22995
22996         * .cvsignore: Added *.dll.
22997
22998         * mini.c (mono_print_tree_nl): New function callable while debugging.
22999
23000         * mini.c (mono_print_code): Export this.
23001
23002         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23003         patched code.
23004
23005 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23006
23007         * mini.h (MonoCompile): Added 'jit_info' field.
23008
23009         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23010         the cfg structure, since it is needed by the AOT compiler.
23011
23012         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23013
23014         * aot.c: A major rewrite. Changes include:
23015         - save exception tables for methods which have them.
23016         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23017         to g_module_symbol.
23018         - reworked the file format so it is now much smaller and needs
23019         fewer relocation entries.
23020         
23021 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * aot.c (load_aot_module): Fix build bustage on platforms without
23024         Boehm GC.
23025
23026 2003-09-04  Martin Baulig  <martin@ximian.com>
23027
23028         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23029
23030 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23031
23032         * TODO: Some new optimization ideas.
23033
23034         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23035
23036         * aot.c: Save the optimization flags used to compile the code into
23037         the AOT module.
23038
23039         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23040         support emitting domain specific code.
23041         
23042         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23043         no longer domain neutral. It can be made domain neutral by compiling 
23044         with --optimize=shared.
23045
23046         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23047         between appdomains.
23048
23049         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23050         loading of AOT code.
23051
23052         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23053         
23054         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23055         if there is no domain neutrality information.
23056
23057 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23058
23059         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23060         format version into the generated library.
23061
23062         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23063         callee method into the caller since one of them could be shared.
23064
23065         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23066         system exceptions from AOT code now works.
23067
23068         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23069         method if it is domain neutral and the callee is not.
23070
23071         * graph.c (cfg_emit_one_loop_level): Fix warning.
23072
23073 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23074
23075         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23076         last checkin.
23077
23078 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23079
23080         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23081         is needed  by code which is executed before mono_runtime_init ().
23082         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23083         
23084         * mini.c (mono_thread_abort): Fix warning.
23085         (mono_jit_compile_method): Call static constructor in the AOT case too.
23086
23087         * aot.c (mono_compile_assembly): Fix warning.
23088
23089 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23090
23091         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23092
23093 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23094
23095         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23096
23097         * cpu-pentium.md: Fix the length of call opcodes so they include the
23098         ESP restoring instruction. Fixes #47968.
23099
23100 2003-08-28  Martin Baulig  <martin@ximian.com>
23101
23102         * mini-x86.c (mono_arch_call_opcode): Added support for
23103         MONO_TYPE_GENERICINST.
23104
23105         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23106
23107 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23108
23109         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23110         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23111
23112         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23113         metadata_section.
23114
23115 2003-08-26  Martin Baulig  <martin@ximian.com>
23116
23117         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23118         when reporting an error, set this to the actual error location.
23119         (mono_method_to_ir): Report the correct error location if
23120         get_basic_blocks() returned an error.
23121
23122 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23123
23124         * mini.c (mono_type_blittable): OBJECT is not blittable.
23125         (mono_method_blittable): Methods which have marshalling descriptors
23126         are not blittable either. Fixes #47842.
23127
23128 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * driver.c mini.c: Use an environment variable instead of a global 
23131         variable. Also fix the build.
23132
23133         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23134         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23135         reporting this. 
23136
23137         * driver.c mini.c: Added --with-valgrind option to turn off some
23138         code which prevents mono from running under valgrind.
23139
23140         * mini.c (mono_emit_call_args): Fixed warning.
23141
23142         * mini.c (mono_emulate_opcode): Fixed warning.
23143
23144 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23145
23146         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23147         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23148         regalloc.c, regalloc.h: specify available registers in arch-specific
23149         code and support floats in the regallocator (patch by Laurent Morichetti 
23150         <l_m@pacbell.net>)
23151
23152 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23153
23154         * mini.c: mono_thread_current() can be called only after
23155         mono_runtime_init(): rearrange code to not call it early on.
23156
23157 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23158
23159         * mini.c: allocate jump tables in the code mempools.
23160
23161 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23162
23163         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23164         freed.
23165
23166 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23167
23168         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23169         12 to 16.  This fixes bug #47453.
23170
23171
23172 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23173
23174         * mini-ppc.c: fixed indexed load and unsigned compares.
23175
23176 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23177
23178         * mini.c: reenabled installation of handler for
23179           thread abort signal.
23180
23181 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23182
23183         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23184         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23185         until it's fixed and actually useful.
23186
23187 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23188
23189         * inssel-long32.brg: couple more opcodes implemented.
23190
23191 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23192         
23193         * mini-sparc.c: Even more opcodes implemeted.
23194
23195 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23196
23197         * mini-sparc.c: More opcodes implemented.
23198
23199 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23200
23201         * mini-sparc.c: More opcodes implemented.
23202
23203 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23204
23205         * inssel-sparc.brg: Add some needed rules.  Direct
23206         copy from PPC.
23207         * Makefile.am: Use inssel-sparc.brg
23208         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23209         an assert happy for now.
23210
23211 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23212
23213         * mini-sparc.c: Fixed compile errors.
23214         * exceptions-sparc.c: Same.  We now produce a mono binary 
23215         on sparc-linux.  Yea.
23216
23217 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23218
23219         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23220         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23221         They compile, but do not work.
23222
23223 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23224
23225         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23226         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23227         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23228         (ct@gentoo.org).
23229
23230 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23231
23232         * mini.c: more opcodes implemented and better support for generics.
23233
23234 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23235
23236         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23237         * mini.c, mini.h: first cut at generics support: some new instructions 
23238         added and changed the behaviour of some of the existing ones.
23239
23240 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23241
23242         * mini.c: Removed definition of metadata_shared mutex here.
23243
23244 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23245
23246         * mini-x86.c: make vararg calls work for instance methods.
23247
23248 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23249
23250         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23251         returns the arguments in a separte list, now.
23252
23253 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23254
23255         * aot.c, mini.c: updates for array type representation changes.
23256
23257 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23258
23259         * mini.c: register function to perform jit shutdown.
23260
23261 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23262
23263         * mini.c: use a faster allocator if possible.
23264
23265 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23266
23267         * aot.c: some cleanups and portability changes.
23268
23269 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23270
23271         * mini.c: use faster allocation for CEE_BOX if possible.
23272
23273 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23274
23275         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23276         Moved inlined mempcy code to its own function so that is can be
23277         reused. Added an inline memset function as well (optimized initobj).
23278         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23279
23280 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23281
23282         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23283
23284 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23285
23286         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23287         arch code can setup the cpu for CLR execution, if needed.
23288         We use it on x86 to set the precision of FP operations.
23289
23290 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23291
23292         * mini.c: disable some optimizations if we can guess they'll cost too
23293         much for a given method.
23294
23295 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23296
23297         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23298         
23299 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23300         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23301         info collection support.
23302
23303 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23304
23305         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23306         is now implemented in the profiling API. Get rid of a couple of
23307         unnecessary global variables.
23308
23309 2003-06-15  Nick Drochak <ndrochak@gol.com>
23310
23311         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23312         * cpu-g4.md: add op_bigmul and op_bigmul_un
23313         * cpu_pentium.md: add op_bigmul_un
23314         * inssel-long32.brg: add rule for unsigned bigmul
23315         * mini-ops.h: define OP_BIGMUL_UN
23316         * mini-x86.c: THE BUG: handle (un)signed properly
23317         * mini.c: choose unsigned opcode if needed.
23318         This set of patches fixes bug #44291
23319
23320 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23321
23322         * mini.c (optimize_branches): improved to handle all kinds of
23323         conditional branches.
23324
23325 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23326
23327         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23328         don't raise exceptions.
23329
23330 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23331
23332         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23333         to arch-specific files.
23334
23335 2003-06-09  Martin Baulig  <martin@ximian.com>
23336
23337         * Makefile.am (libs): Added $(LIBGC_LIBS).
23338
23339 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23340
23341         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23342         and OP_ATAN (fixes bug#44293).
23343
23344 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23345
23346         * Makefile.am, mini-x86.c: rename cpu description array to
23347         pentium_desc, since some compilers define the 'pentium' preprocessor
23348         symbol.
23349
23350 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23351
23352         * mini.c (mini_select_instructions): add explicit branch if the
23353         following block is not the false target of a conditional branch -
23354         we need this with any optimization that reorder or remove bblocks
23355
23356         * mini.c (optimize_branches): bug fixes
23357
23358 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23359
23360         * mini.c (mono_method_to_ir): inline static readonly fields
23361
23362         * ssa.c (fold_tree): start cfold support for long (very simple
23363         cases only)
23364
23365         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23366
23367 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23368
23369         * inssel.brg: fixed memcpy (bug #44219).
23370
23371 2003-06-05  Dick Porter  <dick@ximian.com>
23372
23373         * driver.c: Set the glib log levels to not abort if g_message
23374         recurses.
23375
23376         g_set_prgname() has to happen before mini_init() so that the
23377         process handle gets the info.
23378         
23379 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23380
23381         * driver.c: add intrins to the default optimizations to get wider
23382         exposure.
23383
23384 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23385
23386         * mini.h: some large basic blocks will overflow a 16-bit
23387         integers for symbolic registers.
23388
23389 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23390
23391         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23392         (mono_arch_output_basic_block): fix bug 43499 
23393
23394 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23395
23396         * mini.c: kill duplicated definition of mono_debug_format.
23397
23398 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23399
23400         * mini-x86.c, arrays.cs: fixed register allocation bug.
23401
23402 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23403
23404         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23405
23406         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23407
23408 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23409
23410         * mini.c:
23411         (print_method_from_ip): also print source location information if
23412         available.
23413
23414 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23415
23416         * mini.c (mono_find_block_region): bug fix in region code
23417         (mini_method_compile): enable removing unreachable code again, but
23418         only in methods without exception clauses.
23419
23420 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23421
23422         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23423         Implemented arglist opcode and handling of TypedReference type.
23424         Fixed x86 call convention when a structure is returned.
23425         Minimal support for calling static vararg methods.
23426
23427 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23428
23429         * mini.c (mini_method_compile):  always remove unreachable code,
23430         because the code in them may be inconsistent  (access to dead
23431         variables for example).
23432
23433 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23434
23435         * driver.c, debug-mini.c: warning fixes.
23436
23437 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23438
23439         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23440
23441 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23442
23443         * mini.c: thread-static fields are registered in mono_class_vtable(),
23444         so ensure the function is called before checking for them.
23445
23446 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23447
23448         * mini.c (optimize_branches): fix for bug 43586
23449
23450         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23451         overflow (fixes Bug #43639)
23452
23453 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23454
23455         * mini.c, objects.cs: allow the use of stobj for primitive types.
23456
23457 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23458
23459         * mini.c: be less strict about argument checking until we support
23460         running the verifier.
23461
23462 2003-05-27  Nick Drochak <ndrochak@gol.com>
23463
23464         * basic-long.cs: tests for (ulong)int * (ulong)int also
23465         * mini.c: use the same trick for (ulong)int * (ulong)int
23466
23467 2003-05-27  Nick Drochak <ndrochak@gol.com>
23468
23469         * basic-long.cs: add regression test for (long)int * (long)int
23470         * cpu-pentium.md: add op_bigmul specification
23471         * inssel-long32.brg: add OP_BIGMUL rule
23472         * mini-ops.h: add OP_BIGMUL
23473         * mini-x86.c: register allocator: handle case where src1 needs to be
23474         in EAX.
23475         * mini.c: substitute special BIGMUL opcode in the tree for 
23476         (long)int * (long)int
23477
23478 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23479
23480         * jit-icalls.c: call the type ctor on field access if needed.
23481
23482 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23483
23484         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23485         to a method (including results of ldelema, bug#43207).
23486
23487 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23488
23489         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23490         colors to show exception handler blocks.
23491
23492         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23493         (fix for pinvoke7.cs).
23494
23495 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23496
23497         * mini.h, mini.c: ensure correct initialization order for types that
23498         require it. Prepare for lazy compilation of jit icall wrappers.
23499         Provide a name for opcode emulation to reduce unneeded mallocing.
23500
23501 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23502
23503         * mini-x86.c: better register restoring code and profiling
23504         support for tail calls.
23505
23506 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23507
23508         * mini.h, driver.c: prepare for leaf methods optimization.
23509
23510 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23511
23512         * mini.c: get targets of branches before converting a method.
23513
23514 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23515
23516         * mini.c (optimize_branches): added some experimental code (disbaled) 
23517
23518 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23519
23520         * mini.c (optimize_branches): fix branch to branch optimization 
23521
23522         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23523
23524         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23525
23526         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23527
23528         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23529         if needed.
23530
23531 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23532
23533         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23534         enable use of interface variables again.
23535
23536         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23537         I1 to registers because there is no simply way to sign extend 8bit
23538         quantities in caller saved registers on x86.
23539
23540         * inssel-float.brg: set costs of some rules to 2 so
23541         that monobure always select the arch. specific ones if supplied,
23542         regardless of the order we pass the files to monoburg.
23543
23544 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23545
23546         * mini.c, mini-x86.c: since the magic trampoline for jumps
23547         can't patch the code directly, we do it as soon as the
23548         method gets compiled.
23549
23550 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23551
23552         * mini-x86.c, mini.h: introduce a new patching method
23553         to support CEE_JMP and tail calls.
23554         * mini.c: obey tail.call. Don't precompile methods target
23555         of CEE_JMP.
23556         * tramp-x86.c: new trampoline code to handle methods
23557         reached through a jump.
23558
23559 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23560
23561         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23562         bit values to registers
23563
23564 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23565
23566         * mini.c (mono_compile_get_interface_var): share interface
23567         variables if possible.
23568
23569 2003-05-16  Martin Baulig  <martin@ximian.com>
23570
23571         * debug-mini.c (mono_init_debugger): New function to initialize
23572         the debugger.  This is not in the debugger since it needs to
23573         access some of mini's internals.
23574
23575 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23576
23577         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23578
23579 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23580
23581         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23582         for value type handling.
23583
23584 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23585
23586         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23587         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23588
23589 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23590
23591         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23592           the constructor through a proxy.
23593
23594 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23595
23596         * jit-icalls.c, inssel.brg: fixes to array element address
23597         calculations.
23598
23599 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23600
23601         * mini-x86.c (is_regsize_var): allocate pointer to registers
23602
23603 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23604
23605         * driver.c: fixed typo, added intrins to the set of optimizations
23606         tested with regressions.
23607
23608 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23609
23610         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23611         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23612         test case.
23613
23614 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23615
23616         * inssel.brg: remove some common pop instructions without side effects
23617
23618 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23619
23620         * inssel-x86.brg: fixed thinko in int to double conversions.
23621
23622 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23623
23624         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23625
23626 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23627
23628         * inssel-long32.brg: two more missing instructions.
23629
23630 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23631
23632         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23633         if not already set.
23634
23635 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23636
23637         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23638         correctly.
23639
23640         * basic-float.cs: Added tests for negative zero.
23641
23642 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23643
23644         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23645         a couple of missing operations for long casts, with test cases.
23646
23647 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23648
23649         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23650
23651 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23652
23653         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23654         code size estimation.
23655
23656 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23657
23658         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23659         abstract methods (fix bug 42542)
23660
23661         * aot.c: add ability to handle array types
23662         
23663 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * mini.c: Call the _specific versions of the object allocation
23666         functions if possible.
23667
23668 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23669
23670         * driver.c: call setlocale ().
23671
23672 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23673
23674         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23675         windows build.
23676
23677 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23678
23679         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23680
23681         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23682         wrappers (fix bug 42122)
23683
23684 2003-05-04  Martin Baulig  <martin@ximian.com>
23685
23686         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23687
23688         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23689         s/mini_set_defaults/mono_set_defaults/g.
23690
23691 2003-05-04  Martin Baulig  <martin@ximian.com>
23692
23693         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23694
23695 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23696
23697         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23698         (reported by Don Roberts).
23699
23700 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23701
23702         * mini.c: temporarily work around two bugs for this release.
23703
23704 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23705
23706         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23707         that contains -export-dynamic and it makes using the ld script
23708         useless.
23709         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23710
23711 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23712
23713         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23714         specific cpu.
23715
23716 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23717
23718         * mini.c: make sure leave calls all the needed finally blocks,
23719         even when the target jumps out of multiple exception clauses.
23720
23721 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23722
23723         * ldscript, Makefile.am: add linker script to reduce the number of
23724         exported symbols (should also fix the issues with libwine defining
23725         some of the same symbols in io-layer).
23726
23727 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23728
23729         * driver.c (mini_main): Avoid assertion when no file name is given on 
23730         the command line.
23731
23732 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23733
23734         * driver.c: added --version/-V command line option.
23735         Added the inline optimization in the regression tests.
23736
23737 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23738
23739         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23740         to the type in the method signature (fixes bug#42134).
23741
23742 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23743
23744         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23745
23746 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23747
23748         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23749
23750 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23751
23752         * driver.c: fixed bug #42100.
23753
23754 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23755
23756         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23757
23758 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23759
23760         * mini.c: moved most of the code required to do inlining to its own
23761         function so it can be reused. Inline also ctors if appropriate.
23762
23763 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23764
23765         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23766         the runtime can call mono API functions.
23767
23768 2003-04-27  Martin Baulig  <martin@ximian.com>
23769
23770         * debug-mini.c (mono_debug_init_method): Added
23771         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23772         send a notification to the debugger.
23773
23774         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23775         running in the Mono Debugger, just pass the breakpoint number to
23776         mono_debug_init_method().
23777
23778         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23779
23780 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23781
23782         * mini.c: allow some more unsafe compares.
23783
23784 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23785
23786         * mini-x86.c, Makefile.am: make distcheck works (partially from
23787         a patch by Richard Lee <r.h.lee@attbi.com>).
23788         * regset.c, regset.h: removed, they are unused.
23789
23790 2003-04-25  Dick Porter  <dick@ximian.com>
23791
23792         * driver.c: Usage reports the name as 'mono' not 'mini'
23793         * exceptions-x86.c: Build and run on freebsd
23794
23795 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23796
23797         * Makefile.am: install the program with the 'mono' name and
23798         the library as libmono instead of mini and libmini.
23799
23800 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23801
23802         * driver.c: provide the APIs for the embedding interface of the old jit.
23803
23804 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23805
23806         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23807
23808 2003-04-23  Martin Baulig  <martin@ximian.com>
23809
23810         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23811
23812         * driver.c: Added `--debug' command line argument to enable
23813         debugging support.
23814
23815 2003-04-23  Martin Baulig  <martin@ximian.com>
23816
23817         * debug.[ch]: Removed.  The code is now in
23818         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23819
23820         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23821         last six months.
23822
23823 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23824
23825         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23826
23827 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23828
23829         * mini.c:
23830         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23831         mono_domain_finalize.
23832         (mini_method_compile): use mono_method_profile* if the the option is
23833         enabled.
23834
23835 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23836
23837         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23838         methods with their wrapper.
23839
23840         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23841         methods with their wrapper.
23842
23843         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23844         their wrapper.
23845
23846         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23847         wrapper.
23848
23849         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23850         methods.
23851
23852 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23853
23854         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23855
23856 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23857
23858         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23859         of the mempool. This is slightly faster and uses less memory
23860
23861 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23862
23863         * mini.c: avoid O(n) allocation for variables.
23864
23865 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23866
23867         * mini.c: handle items on the stack after inlining methods.
23868
23869 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23870
23871         * mini.c: make the method->opcode optimization dependent
23872         on MONO_OPT_INSTRINS and do it lazily.
23873
23874 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23875
23876         * driver.c: print overall results at the end of regression run.
23877
23878 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23879
23880         * inssel.brg: don't overwrite symbolic registers.
23881
23882 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23883
23884         * inssel-x86.brg: fix conversion from long to float.
23885
23886 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23887
23888         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23889
23890 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23893
23894         * driver.c: Added --print-vtable option as in the old JIT.
23895
23896 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23897
23898         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23899
23900 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23901
23902         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23903
23904 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * mini.c regalloc.c regalloc.h: Fix memory leak.
23907
23908 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23909
23910         * aot.c (mono_aot_get_method): register all used strings
23911
23912 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23913
23914         * mini.c: always intern strings references with ldstr at compile time.
23915
23916 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23917
23918         * Makefile.am: add BUILT_SOURCES.
23919
23920 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23921
23922         * driver.c: give a better error message when the assembly to execute
23923         doesn't have an entry point.
23924
23925 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23926
23927         * Makefile.am: added hack for automake
23928
23929         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23930         correct sematics.
23931
23932         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23933
23934 22003-04-07  Martin Baulig  <martin@ximian.com>
23935
23936         * Makefile.am: Added Makefile.am.
23937
23938         * debugger-main.c: Removed, this is now in the debugger where it
23939         belongs.
23940
23941         * mini.pc.in: Call this package `mini' for the moment.
23942
23943
23944
23945
23946
23947
23948
23949
23950
23951
23952
23953
23954
23955
23956