2010-02-04 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
4
5         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
6         replaced with the real got.
7
8         * debugger-agent.c (type_commands): Return the enumness if the type as well.
9
10         * image-writer.c: Reduce the amount of #ifdefs a bit.
11
12         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
13         llvm on darwin/arm.
14
15         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
16
17         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
18         global.
19
20 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
21
22         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
23         (mono_llvm_emit_method): Fix unaligned stores too.
24
25         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
26         so async stack walks don't crash.
27
28 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
29
30         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
31         was not patched if the callee needed an rgctx trampoline.
32
33 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
34
35         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
36         vtable address in AOT code.
37
38 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
39
40         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
41         MonoInst's.
42
43 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
44
45         * genmdesc.pl: remove dependency on external cpp.
46
47 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
48
49         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
50         using LLVM, its not needed, and abcrem can't handle it.
51
52 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
53
54         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
55         it easier to group instructions and reduce duplication.
56
57 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
58
59         * decompose.c: Move the array/soft float decompose routines here from
60         method-to-ir.c.
61
62         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
63
64 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
65
66         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
67         to tell LLVM that the got is constant, not used yet.
68
69         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
70
71 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
72
73         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
74         managed wrappers.
75
76 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
77
78         * aot-compiler.c (add_wrappers): Commit the hack which generates
79         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
80         custom attribute.
81
82 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
83
84         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
85         a fault, only used by the LLVM backend.
86
87         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
88         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
89
90         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
91         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
92
93         * mini-llvm.c: Only generate volatile loads from load instructions which have
94         the MONO_INST_FAULT flag set.
95
96 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
97
98         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
99         64 bit platforms.
100
101 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
102
103         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
104         sequence points. Fixes #571236.
105
106 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
107
108         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
109         end of the appdomain unload process, after assemblies have been unloaded.
110         Fixes #574842.
111
112 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
113
114         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
115         works.
116
117         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
118         Fixes #573988.
119
120 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
121
122         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
123
124 2010-01-26  Geoff Norton  <gnorton@novell.com>
125
126         * aot-compiler.c: Fix a logic error introduced when guarding against enums
127         with struct marshalability.
128
129 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
130
131         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
132         it supports class names as well.
133
134         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
135         needed by the GC map code.
136
137         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
138         flags if needed.
139
140         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
141         if cfg->init_ref_vars is set.
142
143         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
144         cfg->disable_initlocals_op_refs is set.
145
146         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
147         using liveness info if cfg->compute_precise_live_ranges is set.
148
149         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
150         volatile variables correctly. Add comments about the live ranges. Not enabled
151         yet.
152
153 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
154
155         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
156         0x2a into them in method prologs.
157
158         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
159
160 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
161
162         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
163         classes, since llvm is compiled with -fno-rtti.
164
165         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
166
167         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
168         llvm does not require it.
169
170         * aot-runtime.c (load_method): Print the full name of the last aot method.
171
172 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
173
174         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
175         thread has not fully started yet.
176
177 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
178
179         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
180
181 2010-01-21  Miguel de Icaza  <miguel@novell.com>
182
183         * driver.c: Do not abort if LLVM is not supported, print a
184         warning and add the information to the Mono JIT information.
185
186 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
187
188         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
189         using explicit null checks.
190
191 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
192
193         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
194         related code.
195
196         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
197         () in one place.
198         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
199         its no longer needed.
200
201         * method-to-ir.c (mono_method_to_ir): Fix a warning.
202
203         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
204         define for platforms still using it (s390). Get rid of the
205         mono_arch_get_throw_exception_by_name () routines on all other platforms.
206
207         * exceptions-x86.c: Rework the throw trampolines so there is only one function
208         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
209
210         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
211         the caller pushed the arguments.
212
213         * mini-llvm.c: Enable throwing exceptions on x86.
214
215         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
216         "Thread (nil) may have been prematurely finalized" messages if this is called
217         on a thread not registered with the runtime.
218
219         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
220
221 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
222
223         * jit-icalls.c (mono_array_new_3): New jit icall.
224
225         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
226
227         * arrays.cs: Add a test for 3 dimensional arrays.
228
229 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
230
231         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
232         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
233         used.
234
235         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
236         thrown on x86.
237
238         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
239
240         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
241
242         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
243
244 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
245
246         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
247           HOST_WIN32.  Also including winsock2. to define struct in_addr.
248
249         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
250
251         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
252
253         Code is contributed under MIT/X11 license.
254
255 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
258
259         * branch-opts.c (mono_optimize_branches): Honor the new flag.
260
261         * mini.c (mini_method_compile): Set the new flag when running under the
262         debugger.
263
264 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
267         a ref/noref value + a global pin flag, so parts of stack frames can still be
268         precisely marked even if they include stuff which needs pinning. Improve logging.
269         Fix many bugs. Not enabled yet.
270
271         * gc-test.cs: Add a few tests.
272
273         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
274         the normal -v options. Avoid propagating liveness information through bblocks
275         which end with a NOT_REACHED opcode.
276
277         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
278         after cfg has been freed.
279
280 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
281
282         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
283         if a clause is skipped because it uses the exception object, since it could
284         have caught the exception.
285
286         * exceptions.cs: Add a test.
287
288 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
289
290        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
291
292         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
293         ICollection<T> wrappers.
294
295 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
296
297         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
298
299 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
302         NOMAP32BIT or optimize_for_xen is set.
303
304 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
305
306         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
307         mono_metadata_str_hash () instead.
308
309 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
310
311         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
312         sizeof (void*).
313
314         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
315
316 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
317
318         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
319         flag is set.
320
321         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
322         throwing code correctly.
323
324         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
325
326 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
327
328         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
329         ftnptrs created by us, handle RGCTX_FETCH correctly.
330         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
331
332         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
333         ftnptr added by mono_aot_get_named_code ().
334
335 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
336
337         * mini-arm.c: Fix a few LLVM problems.
338
339         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
340
341 2010-01-13  Mark Probst  <mark.probst@gmail.com>
342
343         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
344         AOT compiling.
345
346 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
347
348         * jit.h, method-to-ir.c: added ability to set the policy for
349         inserting breakpoints from the break IL instruction or the
350         Debugger.Break () API call.
351
352 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
353
354         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
355         assemblies need to be eagerly loaded.
356
357 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
358
359         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
360
361 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
362
363         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
364         an argument which matches any exception.
365
366 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
367
368         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
369         optimization if the called method is gshared and marshalbyref, since gshared
370         methods can' have wrappers. Fixes #569390.
371
372         * generics.cs: Add a test.
373
374 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
375
376         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
377         callable from gdb.
378
379 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
380
381         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
382
383 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
384
385         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
386         since it is not supported in win2000.
387
388 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
389
390         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
391         error if loading an assembly fails.
392         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
393
394         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
395         if exists.
396
397         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
398         compiled methods.
399
400         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
401
402         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
403         is not supported yet.
404
405         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
406
407 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * method-to-ir.c: All types with variant arguments must fallback to the
410         slow path. This makes cast of variant delegates work.
411
412         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
413         argument that is set to TRUE is the returned vtable slot is for a variant
414         interface. Changed a g_print + g_assert_not_reached to a g_error.
415
416         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
417         a similar fashion of generic virtual methods.
418
419 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
420
421         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
422         when cfg is null.
423
424         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
425         method using a variance aware function.
426
427         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
428
429 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
430
431         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
432         do an icall for now.
433
434 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
435
436         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
437         If LLVM decides to set the code model to Large, reset it to Default.
438
439 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
440
441         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
442         stripped binaries as well.
443
444 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
445
446         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
447         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
448
449         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
450         reg.
451
452 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
453
454         * mini.c (mini_method_compile): Extract the JIT info creation code into a
455         separate function.
456
457         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
458         as the type info to llvm.eh.selector.
459         (exception_cb): Use the type info for filling out some fields of
460         MonoJitExceptionInfo like the flags and the exception class. This is needed
461         because the LLVM produced exception handling clauses might not match the original
462         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
463
464         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
465         separate function. Add an extra argument which returns the type infos
466         corresponding to the exception clauses.
467
468         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
469         exception handling clauses.
470
471 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
474         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
475         to fix an AOT case.
476
477 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
478
479         * mini.c (mono_compile_is_broken): Skip methods from serialization's
480         internal assembly.
481
482 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
483
484         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
485         llvm code.
486
487 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
488
489         * mini.c (mini_method_compile): Verify the method before calling
490         mono_compile_create_vars as this might crash since it uses method
491         information.
492
493         Fixes #560196.
494
495 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
496
497         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
498         one case if AOTing, since the class might not be a concrete class.
499
500 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
501
502         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
503         functions which are now defined in mempool-internals.h.
504
505         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
506
507         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
508
509 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
510
511         * mini.c:
512         * method-to.ir.c:
513         * mini-*.c: Properly handle generic enums.
514
515         Fixes #566294
516
517 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
518
519         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
520         in a few more places.
521
522 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
523
524         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
525         nullable parameters. Fixes #567351.
526
527 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
528
529         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
530
531 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
532
533         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
534         mono_get_generic_context_from_code () call.
535
536         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
537
538 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
539
540         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
541         needed.
542
543 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
544
545         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
546         mono_method_get_signature returns NULL. Fix #567084
547
548 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
549
550         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
551         instead of once for each module.
552
553 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
554
555         * debugger-agent.c (ss_start): Implement step over for the last sequence
556         point in methods.
557
558         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
559         have the STEP_LOC flag set.
560
561         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
562         fails. Fixes #566689.
563
564 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
565
566         * mini.c (mono_add_seq_point): New helper function.
567         (mono_save_seq_point_info): New function to save sequence point info, extracted
568         from mini_method_compile ().
569
570         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
571
572         * mini.h (MonoSeqPointInfo): New structure containing information about
573         the sequence points of a JITted method.
574         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
575         'bucket' field.
576
577         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
578         point information is stored, use a MonoSeqPointInfo structure instead of a
579         GPtrArray. For each seq point, compute a list of successor seq points.
580
581         * debugger-agent.c: Use the successor list to implement step-over more
582         efficiently: instead of single stepping until a different line/IL offset is
583         reached, place breakpoints into all successor seq points.
584
585         * mini.h: Bump AOT file format version.
586
587 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
588
589         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
590
591         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
592
593 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
594
595         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
596         build.
597
598 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
599
600         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
601         alloca as g_malloc is not signal safe.
602
603 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
604
605         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
606         VALGRIND_DISCARD_TRANSLATIONS.
607
608         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
609         checks, they are no longer needed.
610
611         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
612         a function into a sigctx which can handle function pointers.
613
614         * mini-ppc.c: Implement soft debugger support on ppc64.
615
616         * mini-ppc.c: Implement soft debugger support.
617
618 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
619
620         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
621
622 2009-12-17  Marek Habersack  <mhabersack@novell.com>
623
624         * mini.c (mono_get_runtime_build_info): include Mono version in
625         the returned value.
626
627         * driver.c (mono_main): VERSION is now included in the string
628         returned from mono_get_runtime_build_info()
629
630 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
631
632         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
633         signatures. Fixes #565143.
634
635         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
636
637 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
638
639         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
640
641 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
642
643         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
644         making max stack 10x smaller.
645
646 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
647
648         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
649
650 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
651
652         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
653
654 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
655
656         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
657         bigger than MONO_ARCH_MAX_FRAME_SIZE.
658
659         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
660
661         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
662
663         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
664
665         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
666         the compilation.
667
668 2009-12-14  Miguel de Icaza  <miguel@novell.com>
669
670         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
671         raise an invalid program exception.   
672
673         For other opcodes that we might not handle use a g_warning and
674         raise the exception.   Beats termination.
675
676         Fixes #561724
677
678 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
679
680         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
681
682         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
683         by merging the LLVM and !MAP_32BIT cases.
684
685 2009-12-13 Jonathan Chambers <joncham@gmail.com>
686
687         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
688         sigctx being passed in, as we have no CONTEXT available in the APC.
689
690         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
691         for now.
692
693         Code contributed under MIT/X11 license.
694
695 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
696
697         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
698         in the LLVM backend on AMD64.
699
700         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
701         FDE.
702
703         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
704
705         * mini-llvm.c: Export mono_personality for AOT.
706
707         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
708
709         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
710         implicit exception can occur.
711
712         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
713         OP_IMPLICIT_EXCEPTION instruction.
714
715         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
716
717         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
718
719         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
720         inside a protected block.
721
722         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
723         trampolines doesn't include the argument.
724
725         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
726         trampolines on amd64.
727
728         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
729         of RDI.
730
731         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
732         disabled for methods with clauses.
733
734         * mini-llvm.c: Enable support for catch clauses.
735
736         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
737         end of an LLVM compiled finally clause.
738         (mono_handle_exception_internal): Save the exception handling state in TLS
739         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
740         resume unwinding from that point.
741
742         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
743         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
744         to obtain the addresses of the exception handling regions.
745
746         * mini-llvm.c: Add beginnings of support for exception handling, currently only
747         finally clauses are supported.
748
749         * mini.c (mini_method_compile): Add support for LLVM code with exception
750         handlers.
751
752 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
753
754         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
755         proper size.
756
757 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
758
759         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
760         as a primitive type.
761
762 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
763
764         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
765         for 2 parameter sched_setaffinity in older glibc versions. Fixes
766         #564000.
767
768 2009-12-11  Marek Habersack  <mhabersack@novell.com>
769
770         * method-to-ir.c (mini_redirect_call): do not redirect the
771         InternalAllocateStr internal call if string profiling is enabled.
772
773 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
774
775         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
776         generic methods.
777
778         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
779         unwind.h header file.
780
781         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
782         newer valgrind versions seems to handle this fine.
783
784 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
785
786         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
787         on the debugger thread.
788
789 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
792
793         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
794
795         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
796
797         * cpu-<ARCH>.md: Make call_handler clob:c.
798
799         * mini.c: Reenable SSA for methods with clauses.
800
801         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
802         as it causes failures on x86.
803
804 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
805
806         * driver.c: Fail gracefully with --compile-all if mono_method_signature
807         returns NULL (e.g. a bad assembly).
808
809 2009-12-08  Geoff Norton  <gnorton@novell.com>
810
811         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
812         stepping out into native code.  There were issues with nested invokes
813         like .cctors.
814
815 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
816
817         * mini.c (mini_method_compile): Do the disable_llvm checks early
818         and avoid the LLVM compile pass if the checks fail.
819
820         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
821
822         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
823         LLVM optimizations don't try to remove them.
824
825         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
826         different file so the original remains.
827
828 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
829
830         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
831
832         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
833
834         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
835         support for non-inline unwind descriptors.
836
837 2009-12-07  Geoff Norton  <gnorton@novell.com>
838
839         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
840         the interrupt_count slightly differently.  Native threads were never
841         marked as resumed.
842
843 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
844
845         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
846         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
847         yet generate this info.
848
849         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
850
851         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
852         client can distinguish between intptrs and longs.
853
854 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
855
856         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
857         blob.
858
859         * aot-runtime.c (load_function): Update after the change above.
860
861         * mini.h: Bump AOT file format version.
862
863         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
864         if the delegate class is dynamic.
865
866         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
867         in gshared code too using the new rgctx info type
868         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
869
870 2009-12-04  Geoff Norton  <gnorton@novell.com>
871
872         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
873         we need to track the original suspend count so the thread properly
874         wakes up in resume_thread.
875
876 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
877
878         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
879         code.
880
881         * generics.cs: Add a test.
882
883         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
884         is 0. Simplify a lot of code using this.
885
886         * mini-trampolines.c (mono_delegate_trampoline): Call
887         mono_create_static_rgctx_trampoline () before saving the final address in
888         delegate->method_code, to avoid calling it each time a delegate is first called.
889
890         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
891         which need static rgctx trampolines.
892
893         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
894         keyed on the method+addr pair, since addr could be either the method addr or
895         an unbox trampoline in the AOT case. Fixes #560246.
896
897 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
898
899         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
900         place it was called before too.
901
902 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
903
904         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
905         if no security manager is present, to speed up the AOT case. Call
906         mono_class_vtable () full with raise_on_error == TRUE instead.
907
908 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
909
910         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
911         the local optimization passes can take its result into account. Fixes
912         #559876.
913
914         * exceptions.cs: Add a test.
915
916 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
917
918         This patch is contributed under the terms of the MIT/X11 license
919
920         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
921
922 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
923
924         * mini.h (MonoInst): Remove unused 'ssa_op' field.
925
926         * debugger-agent.c: Rework the handling of stack traces of running threads to
927         avoid crashes if compute_frames () tries to walk the stack of running thread.
928
929         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
930
931         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
932
933         * mini.h (StackFrameInfo): Add an 'lmf' field.
934
935 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
936
937         * debugger-agent.c (suspend_current): Always set really_suspended.
938
939         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
940
941         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
942
943 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
944
945         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
946         really suspended.
947
948 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
949
950         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
951
952 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
953
954         * mini-trampolines.c: Fix MSVC build.
955
956 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
959
960 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
961
962         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
963         the instruction following an OP_FCOMPARE is optimized away.
964
965 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
966
967         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
968         emit_autoreg () into this arch-specific function.
969
970         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
971         code, it is no longer needed.
972
973         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
974
975         * mini.h: Bump AOT file format version.
976
977         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
978         using the sorted_code_offsets array, instead of reading it from the
979         exception debug info.
980         (load_method): Call mono_aot_find_jit_info instead of
981         decode_exception_debug_info ().
982
983         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
984         LLVM compiled as a flag.
985
986 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
987
988         * debugger-agent.c (resume_thread): Fix a warning.
989
990         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
991         generated.
992
993 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
994
995         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
996         contents to MonoAotFileInfo.
997
998 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
999
1000         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1001         Put all binary data into a giant blob, similarly to the way .net assemblies
1002         store binary data. Emit offset tables in a compact form to reduce their size.
1003
1004         * mini.h: Bump AOT file format version.
1005
1006         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1007         places.
1008
1009         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1010         avoid linear searches at runtime.
1011
1012         * aot-runtime.c (find_symbol): Update this to use the hash.
1013
1014         * mini.h: Bump AOT file format version.
1015
1016 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1019         container.
1020
1021         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1022         too.
1023
1024         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1025         the distribution of got slot types.
1026
1027         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1028
1029         * method-to-ir.c: Add support for generating explicit null checks.
1030
1031 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1034         on a random thread if possible.
1035
1036         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1037         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1038         correctly.
1039
1040         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1041         regs. Pass the real size of the regs array to mono_unwind_frame ().
1042
1043         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1044         ones instead.
1045
1046 2009-11-24  Geoff Norton  <gnorton@novell.com>
1047
1048         * mini-darwin.c: Work around apple bug rdar://7209349  See
1049         http://openradar.appspot.com/7209349 for details.  Synopsis,
1050         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1051         never been initialized before.
1052
1053 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1056
1057         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1058
1059 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1060
1061         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1062         OP_SHL_IMM is not 32 bit.
1063
1064 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1067
1068 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1071         encountered.
1072
1073         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1074         > 0 since some threads can resume if their resume_count is > 0.
1075         (invoke_method): Avoid reading freed memory.
1076
1077         * debugger-agent.c (process_suspend): Extract the suspend code from
1078         process_single_step_inner () to a separate function. Rework the code to prevent
1079         races between this function and thread interrupts.
1080
1081         * debugger-agent.c (suspend_current): Check the resume_count field instead
1082         of resume_one so suspends+resumes during single threaded invokes work
1083         correctly.
1084
1085 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1088         to make the generated code smaller.
1089
1090         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1091         sequence generated by recent LLVM versions.
1092
1093         * mini-llvm.c: Add support for a few simple cases which weren't supported
1094         before.
1095
1096         * mini-trampolines.c (mono_magic_trampoline): Don't call
1097         mono_arch_get_vcall_slot () when llvm is enabled.
1098
1099         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1100
1101         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1102         into a new function called common_call_trampoline () which is used by the
1103         llvm vcall trampoline as well.
1104
1105         * debugger-agent.c: Implement single threaded invokes.
1106
1107         * debugger-agent.c: Revert change which broke the agent on linux.
1108
1109         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1110         #557606.
1111
1112         * generics.cs: Add a test.
1113
1114 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * debugger-agent.c: Fix the cygwin build.
1117
1118 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * cprop.c: Remove this unused file.
1121
1122 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1125         #557262.
1126
1127         * basic.cs: Add a test.
1128
1129 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1132         in one more place.
1133
1134 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1137         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1138         it. Use this flag to control llvm related code paths instead of #ifdef
1139         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1140         AOT code.
1141
1142         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1143
1144         * mini.h: Bump AOT file format version.
1145
1146         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1147         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1148
1149         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1150         was used as an assembly filter.
1151
1152 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * unwind.c: Fix support for ppc.
1155
1156         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1157         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1158
1159 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1162         port.
1163         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1164         added by the ps3 changes.
1165
1166 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1167
1168         * mini-gc.c: Resurrect this, so at least it compiles.
1169
1170         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1171
1172 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1175         create_event_list () so assembly filters can be used.
1176
1177         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1178         from the LMF.
1179
1180 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1183         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1184         is disabled.
1185
1186         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1187         classes for char/bool too.
1188
1189         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1190
1191         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1192         used.
1193
1194         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1195         Fix warnings.
1196
1197 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1198
1199         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1200         
1201         Code contributed under MIT/X11 license.
1202
1203 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1204
1205         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1206         threads in native code work.
1207
1208         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1209         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1210         version.
1211
1212 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1213
1214         * debugger-agent.c: Implementation for Windows platform.
1215
1216         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1217         primitives. Use SEH to implement breakpoints and single stepping.
1218
1219         * mini-x86.h: Enable soft debugger on Windows.
1220
1221         Code contributed under MIT/X11 license.
1222
1223 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1226         under XEN. Fixes #522894.
1227
1228         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1229
1230         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1231         interface calls in LLVM AOT code.
1232
1233         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1234         is found.
1235
1236         * mini-llvm.c: Add support for OP_VPHI.
1237
1238         * objects.cs: Add a test.
1239
1240 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1243         this is called on the debugger thread.
1244
1245 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * mini-llvm.c: Add soft-float support.
1248
1249         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1250         FCALL which returns an R4.
1251
1252         * driver.c (mono_main): Add a missing '\n'.
1253
1254         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1255         platforms which doesn't support the LLVM IMT trampoline.
1256
1257 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1258
1259         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1260
1261         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1262
1263         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1264         virtual calls.
1265
1266         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1267
1268 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1271         Instead of emitting a method_order table, sort the contents of the code_offsets
1272         table and do a binary search in the sorted table. The previous approach doesn't
1273         work with LLVM which emits methods in a arbitrary order.
1274
1275         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1276         in the .eh_frame section in ELF files.
1277
1278         * mini.h: Bump corlib file format version.
1279
1280         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1281
1282         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1283         LDMIA->LDM macro name change.
1284
1285 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1288         x86.
1289
1290         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1291         SVN.
1292
1293         * aot-compiler.c: Ditto.
1294
1295         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1296         &align to mini_type_stack_size_full ().
1297
1298         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1299
1300         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1301
1302 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * mini-arm.c: Compute the stack space used by arguments using
1305         mini_type_stack_size_full ().
1306
1307 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * optflags-def.h: Remove dead TREEPROP optimization.
1310
1311 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1314
1315         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1316
1317 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1318
1319         * driver.c (mono_jit_parse_options): New public API function to parse options
1320         as done by the runtime executable.
1321
1322         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1323         when handling named arguments.
1324
1325 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1328         for passing small vtypes in registers, make the CallInfo structures more
1329         similar to the code on the other platforms.
1330
1331         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1332         the code in the prolog requires it.
1333
1334 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1337         (koush@koushikdutta.com).
1338
1339         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1340         where the thunk memory should be allocated from. Fixes appdomain unloading
1341         on arm.
1342
1343 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1346         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1347
1348 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1349
1350         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1351         AOT, as it is not implemented yet.
1352
1353         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1354
1355 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1356
1357         * debugger-agent.c: Fix windows build.
1358
1359 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1362         after the client connects/disconnects.
1363
1364         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1365         when an exception of a given type is thrown.
1366
1367         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1368         only on an uncaught exception.
1369
1370         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1371
1372         * debugger-agent.c: Add a 'launch' option.
1373
1374 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * debugger-agent.c: Add a 'timeout' option.
1377
1378 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1379
1380         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1381         the JDWP agent.
1382
1383 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1384
1385         * debugger-agent.c (set_breakpoint): Emit a log message.
1386
1387 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini-arm.c: Fix the arm build.
1390
1391 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1392
1393         * aot-compiler.c: don't leak the value returned from
1394         mono_type_full_name().
1395
1396 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1397
1398         * debugger-agent.c: defer including mono-mutex.h until we know the
1399         agent is supported.
1400
1401 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1402
1403         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1404         of pthreads directly.
1405
1406         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1407         exception handlers. Pass info argument.
1408
1409         * mini.h: Adjust signatures of soft debugger functions to pass void*
1410         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1411
1412         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1413         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1414         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1415         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1416
1417         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1418
1419         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1420         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1421         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1422         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1423
1424         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1425
1426         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1427
1428         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1429
1430         * mono-semaphore.h: Skeleton implementation for Windows.
1431
1432         Code contributed under MIT/X11 license.
1433
1434 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1435
1436         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1437
1438         Code contributed under MIT/X11 license.
1439
1440 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1441
1442         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1443
1444         Code contributed under MIT/X11 license.
1445
1446 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1449         debug info to 100 because 10 still slows down gdb too much.
1450
1451         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1452         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1453         them in the wrappers.
1454
1455 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1458
1459         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1460
1461         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1462         function mono_aot_get_array_helper_from_wrapper ().
1463
1464         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1465         array helper methods.
1466
1467 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1470         the value was loaded from memory.
1471
1472         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1473         the value was loader from there.
1474
1475         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1476         without constant swizzle.
1477
1478 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1479
1480         * mini-amd64.c: Put soft debugger functions behind a
1481         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1482
1483         * mini-amd64.h: disable the soft debugger in windows.
1484
1485         Code contributed under MIT/X11 license.
1486
1487 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1488
1489         * mini-x86.c: Put soft debugger functions behind a
1490         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1491
1492         Code contributed under MIT/X11 license.
1493
1494 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1495
1496         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1497         to mono_arch_find_jit_info_ext.
1498
1499         Code contributed under MIT/X11 license.
1500
1501 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1502
1503         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1504
1505         * debugger-agent.c: Add support for filtering events by assemblies.
1506
1507         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1508         the agent is not enabled.
1509
1510 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1511
1512         * exceptions-x86.c: hopefully last change to fix the windows build.
1513         This one courtesy of Jonathan Chambers.
1514
1515 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1516
1517         * debugger-agent.c: remove unused function.
1518
1519 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1520
1521         * debugger-agent.c: add #ifdefs for a few header files.
1522         * mini-x86.h: disable the soft debugger in windows.
1523         Step 1 of 2 to make this compile on windows with gcc.
1524
1525 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1528         as it breaks the build.
1529
1530 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1531
1532         Merge the soft debugger branch.
1533
1534         * debugger-agent.h debugger-agent.c: New files containing the soft
1535         mode debugger module.
1536
1537         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1538         at the appropriate locations.
1539
1540         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1541         opcode.
1542
1543         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1544         enable/disable single stepping.
1545
1546         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1547         which returns all information in a StackFrameInfo structure, and can handle the
1548         LMF frames added by the debugger.
1549
1550         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1551         about an LMF frame.
1552
1553         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1554         walker function which works on a specific thread and passes a StackFrameInfo
1555         structure to its callback.
1556
1557         * mini.c (mini_init): Initialize the debugger agent.
1558
1559         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1560
1561         * mini-ops.h: Add OP_SEQ_POINT opcode.
1562
1563         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1564         arguments to the debugger agent.
1565
1566 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1569         speed things up.
1570
1571         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1572
1573         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1574
1575         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1576
1577         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1578         if needed.
1579         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1580         sets the IMT argument and makes a virtual call.
1581
1582         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1583
1584 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1587         the windows build.
1588
1589 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1592         runtime. Fixes #551228.
1593
1594 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1597
1598         * basic.cs: Add a test.
1599
1600         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1601         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1602         CONSTRAINED. Fixes #550964.
1603
1604         * generics.cs: Add a test.
1605
1606 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1607
1608         * mini-posix.c (add_signal_handler): Use
1609         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1610
1611 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1612
1613         Contributed under the terms of the MIT/X11 license by
1614         Jerry Maine <crashfourit@gail.com>.
1615
1616         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1617         sse4a for simd intrinsics.
1618
1619         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1620         sse4a for simd intrinsics.
1621
1622 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1625         instead of inst_p1 which is not the same on ILP32 platforms.
1626
1627 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1630         not the mscorlib one before calling mono_get_lmf_addr.
1631
1632         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1633         of the ip to the LMF.
1634
1635         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1636         immediate in the op->op_imm optimization.
1637
1638         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1639         understand. VTypes now work, but are not abi compliant, as they are
1640         split into 4 byte parts instead of 8.
1641         (emit_memcpy): Fix the unrolled case to work on the PS3.
1642
1643         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1644
1645         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1646         the default when static linking.
1647
1648         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1649
1650         * aot-compiler.c: Add an autoreg option to automatically register
1651         statically linked aot modules using ELF .ctors.
1652
1653         * genmdesc.pl: Add __ppc64__ to allowed defines.
1654
1655 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1658         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1659
1660 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1661
1662         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1663
1664 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1665
1666         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1667         which will contain the domain where the method was found.
1668
1669         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1670         mini_jit_info_table_find ().
1671
1672         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1673
1674         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1675
1676 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1679         set, its not supported yet.
1680
1681 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1682
1683         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1684         iface wrapper is not found.
1685         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1686
1687 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1690         which have a different name.
1691
1692         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1693         wrappers and Array.GetGenericValueImpl ().
1694
1695         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1696         because of the change above.
1697
1698         * generics.cs: Add a test for full aot + generic array ifaces.
1699
1700 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1701
1702         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1703         that hides the previous one.
1704
1705 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1708         marshalled. Fixes #541623.
1709
1710 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1713
1714 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1717
1718 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1719
1720         * mini-posix.c (sigprof_signal_handler):
1721         Implemented support for building stat call chans in different ways.
1722
1723 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1724
1725         * mini-exceptions.c (mono_find_jit_info):
1726         Also check that a jit info has been found (fixes a profiler crash).
1727
1728 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1729
1730         * mini.c (mono_codegen):
1731         Call mono_profiler_code_buffer_new with correct code address.
1732
1733 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * driver.c (mono_main): Change the date in the copyright.
1736
1737 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1738
1739         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1740         allocator in shared generic code for open classes, because we
1741         can't get those classes' vtables.  We need to make managed
1742         allocators not depend on the vtable at compile-time to solve this.
1743
1744 2009-10-13  Martin Baulig  <martin@ximian.com>
1745
1746         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1747         `const guint8 *trampoline' argument; send both the old and the new
1748         notification.
1749
1750 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1753         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1754         (can_marshal_struct): Skip structures with auto layout.
1755
1756         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1757
1758 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1759
1760         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1761         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1762         a variable to hold the stack slot used by the int<->float conversion opcodes.
1763
1764         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1765
1766 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1769         when using full-aot.
1770
1771 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1774         each instance of Comparer<T>.
1775
1776         * generics.cs: Add a new test.
1777
1778 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * driver.c (parse_debug_options): Add a 'gdb' option.
1781
1782         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1783
1784         * image-writer.c: Add support for emitting the image into a memory buffer.
1785
1786         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1787
1788         * aot-compiler.c: Add support for registering debug info with GDB using the
1789         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1790         MONO_XDEBUG to 'gdb'.
1791
1792 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1795         gdb mode.
1796
1797 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1800         can be used to set breakpoints in gdb.
1801
1802         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1803         segment to an absolute address.
1804
1805 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1806
1807         * method-to-ir.c: Use the managed array allocator method if
1808         available.
1809
1810 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1811
1812         * aot-compiler.c : Fix the MSVC builds
1813
1814         Code is contributed under MIT/X11 license.
1815
1816 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1819         avoid registering 1 symbol file per method with gdb.
1820
1821 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * mini-sparc.c: Fix the handling of enums with base type long.
1824
1825         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1826
1827         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1828         instead of using type->data.klass as the later doesn't work with generics.
1829
1830 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1831
1832         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1833         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1834         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1835         works differently now and we don't handle it in the JIT anymore.
1836
1837         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1838         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1839         the Thread class split.
1840
1841 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * driver.c: Don't run tests with the obsolete treeprop optimization.
1844
1845         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1846         variable volatile. Fixes #541577.
1847
1848         * basic-calls.cs: Add a new test.
1849
1850         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1851
1852 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1855         work/required with recent iphone sdk versions.
1856
1857         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1858         structures.
1859
1860         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1861         in the VCALL decomposition code.
1862
1863 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1866
1867         * basic.cs: Add a test.
1868
1869         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1870         generic invokes.
1871
1872         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1873         searches all the domains of the current thread.
1874
1875         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1876
1877 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1880         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1881
1882         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1883         for non-jit trampolines.
1884
1885         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1886
1887         * aot-compiler.c (add_wrappers): Ditto.
1888
1889         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1890         the size of the param area used by dyn_call to 6 which covers the majority of
1891         methods.
1892
1893         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1894
1895         * mini-arm.c: Implement support for passing/receiving
1896         longs and receiving floats in the dyn_call code.
1897
1898         * mini-amd64.c: Implement support for receiving vtypes in registers in
1899         the dyn_call code.
1900
1901         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1902         the dyn_call code.
1903
1904 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * mini-arm.c (get_call_info): Return more precise information in
1907         ArgInfo->regtype.
1908         (dyn_call_supported): Use the information in CallInfo.
1909
1910         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1911
1912         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1913         code.
1914
1915         * mini-arm.c: Update after the dyn_call api changes.
1916
1917         * mini.c (mini_create_jit_domain_info): Register a destructor function
1918         for the runtime_invoke_hash.
1919
1920         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1921         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1922         this function.
1923         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1924         (dyn_call_supported): Simplify this by using get_call_info ().
1925         (mono_arch_dyn_call_free): New destructor function.
1926
1927         * generics.cs: Remove a printf.
1928
1929         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1930
1931         * mini-arm.c: Add support for enum return values and passing a few arguments
1932         on the stack.
1933         
1934         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1935         dyn invoke.
1936
1937         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1938
1939         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1940         the dynamic invoke wrappers.
1941
1942         * mini-arm.c: Implement OP_DYN_CALL for arm.
1943
1944         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1945         supported by the dynamic runtime invoke wrapper.
1946
1947         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1948         runtime invoke wrapper.
1949
1950         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1951         if possible when running with full-aot.
1952
1953         * mini-ops.h: Add OP_DYN_CALL opcode.
1954
1955         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1956         with dynamic arguments lists similar to libffi.
1957
1958 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1961         
1962         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1963         to NEWARR.
1964
1965         * iltests.il.in: Add a new test.
1966         
1967 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * aot-compiler.c (add_generic_instances): Add more instances of
1970         GenericEqualityComparer.
1971
1972 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1973
1974         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1975
1976 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1977
1978         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1979         comments on some functions that now can fail.
1980
1981 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1982
1983         * Makefile.am: Add Info.plist to EXTRA_DIST
1984
1985 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1988         static synchronized wrappers. Fixes #539500.
1989
1990 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1991
1992         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1993         properly.
1994
1995 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1998         lmf before calling filter clauses as well. Fixes #539550.
1999
2000         * exceptions.cs: Add a test.
2001         
2002 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * aot-compiler.c (add_generic_class): Add instances of
2005         Array.GetGenericValueImpl as well.
2006
2007         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2008         can be tested too.
2009
2010         * generics.cs: Add a fullaot linq test.
2011
2012 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2015         reg r1 on arm.
2016
2017 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2018
2019         * mini-trampolines.c (mono_delegate_trampoline) : Call
2020           mono_cominterop_get_invoke if the delegate target object
2021           is a COM object.
2022
2023         Code is contributed under MIT/X11 license.
2024
2025 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2026
2027         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2028         internal call is defined outside platform code. Reduce code 
2029         duplication with existing [Method|Field]AccessException
2030
2031 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2032
2033         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2034         if the return value is a small struct passed on regs.
2035
2036 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2039
2040         * mini-codegen.c: Enable the cpu description validation for arm.
2041
2042 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2045         test which depends on structs to objects.cs.
2046         
2047         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2048         require object model related stuff working.
2049
2050         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2051
2052         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2053
2054         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2055         against the instruction metadata in mini-ops.h. amd64 only for now.
2056
2057         * mini-ops.h: Fix some instruction descriptions.
2058
2059         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2060         unused instructions.
2061
2062 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * exceptions.cs: Add a new test.
2065
2066 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2067
2068         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2069
2070 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2073         skip empty phi opcodes.
2074         
2075         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2076         correctly by zero extending after loads. Skip methods containing calls
2077         to the monitor enter/exit trampolines.
2078
2079         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2080         when calling mono_thread_force_interruption_checkpoint ().
2081
2082         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2083
2084         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2085         64 bit thunks.
2086         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2087
2088         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2089         bootstrap could run.
2090
2091 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2094
2095 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2096
2097         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2098         of the method to
2099         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2100         LLVM might be very short.
2101
2102         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2103         in OP_THROW/RETHROW.
2104
2105         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2106         alignment on osx.
2107
2108 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2111         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2112         LLVM might be very short.
2113
2114 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2117         the alignment for the value of sp.
2118
2119 2009-09-01  Geoff Norton  <gnorton@novell.com>
2120
2121         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2122         managed wrappers in full aot.
2123
2124 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2127
2128 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2131
2132 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2135
2136         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2137         saved info.
2138
2139         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2140
2141         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2142         depend on the info MonoMethodHeader which could be missing in IL stripped
2143         assemblies.
2144
2145 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2148         they are only 4 byte aligned.
2149
2150 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2153         was done previously, since using SP causes too many problems.
2154
2155         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2156         frames without a frame pointer works.
2157
2158         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2159         global register in methods with calls, since the calls can go through
2160         a static rgctx trampoline which doesn't save it.
2161
2162 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2165
2166 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2167
2168         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2169
2170 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2171
2172         * method-to-ir.c: Fix warnings for uninitialized variables.
2173
2174 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2175
2176         * mini-exceptions.c:
2177         * aot-compiler.c: Fix printf warnings.
2178
2179 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2182         Add GetGenericValueImpl<string>.
2183         
2184         * aot-compiler.c (add_generic_instances): Add instances of
2185         GenericEqualityComparer<T> for primitive types. Only emit the array
2186         wrappers into the mscorlib image.
2187
2188 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2191         the methods_loaded array using amodule->info->nmethods.
2192
2193         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2194         (MONO_AOT_FILE_VERSION): Bump this.
2195
2196         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2197         to work.
2198
2199         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2200         MonoJitInfo doesn't belong to its methods aot image.
2201
2202 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2205
2206         * mini-arm.c: Fix warnings.
2207         
2208         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2209
2210         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2211         supports it.
2212
2213 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2216         avoid clobbering IP.
2217
2218         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2219         hold the trampoline argument, so its initial value is available during
2220         debugging.
2221
2222 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2223
2224         * exceptions-arm.c:
2225         * exceptions-hppa.c:
2226         * mini.c:
2227         * exceptions-s390x.c:
2228         * exceptions-mips.c:
2229         * exceptions-ppc.c:
2230         * exceptions-sparc.c:
2231         * exceptions-alpha.c:
2232         * aot-runtime.c:
2233         * mini-trampolines.c:
2234         * exceptions-x86.c:
2235         * exceptions-s390.c: add and use #define's instead of sizeof()
2236         for MonoJitInfo and MonoJitInfoTable.
2237
2238 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2239
2240         * tramp-arm.c:
2241         * tramp-amd64.c:
2242         * tramp-ppc.c:
2243         * tramp-x86.c: use a #define instead of sizeof() for a few
2244         structures that use a zero-length array.
2245
2246 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2247
2248         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2249         case when the method is dynamic. Fixes #529238.
2250
2251 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2254         of asserting when a method is JIT compiled in full-aot mode.
2255
2256 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2257         
2258         Contributed under the terms of the MIT/X11 license by
2259         Jerry Maine <crashfourit@gail.com>.
2260         
2261         * fixed wrong dates in changelog.
2262
2263 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2264         
2265         Contributed under the terms of the MIT/X11 license by
2266         Jerry Maine <crashfourit@gail.com>.
2267
2268         * basic-simd.cs: added test for packed double square root.
2269         * cpu-amd64.md: added opcode info for packed double square root.
2270         * cpu-x86.md: added opcode info for packed double square root.
2271         * mini-ops.h: added IR opcode for packed double square root.
2272         * mini-x86.c: added IR to native translation code for packed double square root.
2273         * mini-amd64.c: removed todo for packed double square root.
2274         * simd-intrinsics.c: added method to IR opcode converstion for
2275         packed double square root.
2276
2277 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2278
2279         Contributed under the terms of the MIT/X11 license by
2280         Jerry Maine <crashfourit@gail.com>.
2281
2282         * mini-amd64.c: Added a change to help tell the difference as 
2283         to what perpose the xmm register is being used--mainly to help
2284         with debuging.
2285         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2286         (one used for special cases) xmm registers for both fp
2287         and simd ops. Added define to turn on new feature in the regalloc
2288         that allows fp and simd ops to share the xmm regs happily.
2289         * codegen.c: Added code to detect for which perpose an xmm reg is
2290         being used (fp or simd) and to translate back and forth to the
2291         correct logical reg bank (fp or simd) for 'spill load's.
2292
2293 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2294
2295         Contributed under the terms of the MIT/X11 license by
2296         Jerry Maine <crashfourit@gail.com>.
2297
2298         * basic-simd.cs: Added tests for stressing the regalloc when running with
2299         16 simd regs and when simd and fp ops share the same reg bank.
2300
2301 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2302
2303         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2304         in shared generic code, we might have to look up the class in the
2305         RGCTX.  If we use the class directly, compute its GC descriptor.
2306
2307 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2308
2309         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2310
2311 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2314         check for errors. Fixed the case when the class with the Main
2315         method is broken.
2316
2317 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2318
2319         Contributed under the terms of the MIT/X11 license by
2320         Jerry Maine <crashfourit@gail.com>.
2321
2322         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2323
2324 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2327
2328 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2329
2330         * method-to-ir.c: Fix naming of stelem and ldelem.
2331
2332 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * driver.c (main_thread_handler): Check that the assembly loaded
2335         matches the filename when doing AOT.
2336
2337 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2338
2339         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2340         call it anymore.
2341
2342         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2343         utils/mono-sigcontext.h).
2344
2345         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2346         #ifdef.
2347
2348 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2349
2350         * mini.c (mono_codegen):
2351         Call profiler hook to keep track of method code buffers.
2352
2353 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2354
2355         * method-to-ir.c: Invoke write barriers for the
2356         Interlocked.(Compare)Exchange JIT intrinsics.
2357
2358 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2359
2360         * Makefile.am (version.h): Fix issues when built out of tree.
2361         Remove some redundant 'grep's piped through 'sed's.
2362
2363 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2364
2365         This patch is contributed under the terms of the MIT/X11 license
2366
2367         * mini-ppc.c (mono_arch_output_basic_block):
2368         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2369         for bits 32-47 with signed load/store diplacements for bits
2370         48-63.  Use prefered base/offset order for indexed form.
2371         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2372         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2373         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2374         OP_LOADI2_MEMBASE): Same.
2375         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2376         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2377         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2378         indexed form.
2379         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2380         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2381         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2382         OP_LOADI1_MEMINDEX): Same
2383         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2384         OP_STORER8_MEMINDEX): Same
2385         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2386         computations.
2387         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2388         for bits 32-47 with signed load/store diplacements for bits
2389         48-63.  Use prefered base/offset order for indexed form.
2390
2391 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2392
2393 This patch is contributed under the terms of the MIT/X11 license
2394
2395         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2396         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2397         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2398         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2399         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2400         cfg->stack_usage to avoid size warnings.
2401         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2402         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2403         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2404         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2405         to convert.
2406         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2407         after code varible is initialized.
2408         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2409         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2410         (mono_arch_emit_epilog): 
2411         Move Use ppc_load32 for cfg->stack_usage to avoid size
2412         warnings.
2413
2414 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2415
2416         * method-to-ir.c: The write barrier doesn't do the store anymore,
2417         so we have always to emit it.  Also, emit the wbarrier after the
2418         store.
2419
2420 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2423         for argument count 3 too.
2424
2425 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2428         the caller handle the exceptions.
2429         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2430         method. Fixes #524498.
2431
2432 2009-07-22  Geoff Norton  <gnorton@novell.com>
2433
2434         * mini-exceptions.c: Fix build on ia64.
2435
2436 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2437
2438         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2439         barriers.
2440
2441 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2444         code.
2445
2446 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2447
2448         * basic-simd.cs (Main): Pass args to the test driver.
2449
2450 2009-07-20  Geoff Norton  <gnorton@novell.com>
2451
2452         * mini-x86.h: Fix the x86 version guards to use Apple's
2453         properly defined macros.
2454
2455 2009-07-20  Geoff Norton  <gnorton@novell.com>
2456
2457         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2458         aligned access.
2459
2460 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2463         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2464         the information which is needed for invokes, so only one locking+hash table
2465         lookup is needed.
2466
2467         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2468         
2469         * aot-compiler.c (add_generic_instances): Emit instances of 
2470         GenericComparer<T> for primitive types.
2471
2472 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2473
2474         * mini-posix.c: Fix linux build.
2475
2476 2009-07-19  Geoff Norton  <gnorton@novell.com>
2477
2478         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2479         mono_gdb_render_native_backtraces
2480         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2481         so we implement the sane semantics to the runtime here
2482         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2483         so we need to call it differently (mono_gdb_render_native_backtraces)
2484         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2485         here for default implementations.
2486         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2487         support Apple's weird syscall (SYS_fork) implementation and not busy
2488         loop in abort() on native crashes on OSX anymore.
2489
2490 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * aot-runtime.c (load_method): Change the handling of the
2493         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2494         are used.
2495
2496         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2497
2498 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2501         seems to break the aot tests.
2502         
2503         * mini.c (mono_patch_info_equal): Fix the handling of 
2504         MONO_PATCH_INFO_RGCTX_FETCH.
2505
2506 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2509
2510         * mini.c (mono_patch_info_hash): Fix the handling of 
2511         MONO_PATCH_INFO_INTERNAL_METHOD.
2512         (mono_patch_info_equal): Ditto.
2513
2514 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2517         in a few places.
2518         
2519         * mini-llvm.c: Add some infrastructure for AOT support.
2520
2521 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * mini-llvm-cpp.c: Update to the latest llvm api.
2524         
2525         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2526         option to false to prevent llvm from installing signal handlers which
2527         trip up the gc.
2528         
2529 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2530
2531         * cpu-x86.md:
2532         * cpu-amd64.md: Revert previous change as those instructions
2533         take 2 separate arguments. Remember to read the arch docs more
2534         carefully next time.
2535
2536 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2539
2540 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2541
2542         * mini-ppc.c: exploit multiple load/store units if available (rest of
2543         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2544         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2545
2546 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2547
2548         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2549         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2550
2551 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2552
2553         * cpu-x86.md: Fix missing clobbering from trancendental simd
2554         ops.
2555
2556         * cpu-amd64.md: Same.
2557
2558 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2559
2560         Contributed under the terms of the MIT/X11 license by
2561         Jerry Maine <crashfourit@gail.com>.
2562
2563         * basic-simd.cs: Added tests for single and doulble indexers.
2564
2565         * cpu-amd64.md: Added simd opcode information.
2566
2567         * mini-amd64.c: Added IR to native simd generation code.
2568         Added simd register names and function that returns them.
2569
2570         * mini-amd64.h: Added marcos to turn on simd code compilation in
2571         amd64. Added max simd register count marco. Added caller/callee
2572         register mask marcos. Added marcos to use simd register bank.
2573
2574         * mini.h: Added helper marco for shufling dwords and simple
2575         floats.
2576
2577 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2580
2581         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2582
2583         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2584         the length of the native code as well.
2585
2586         * basic-simd.cs: Add a test for #521662.
2587
2588 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2589
2590         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2591
2592 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2593
2594         * mini.c: Register function for getting the IP from a signal
2595         context with metadata.
2596
2597 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2600         call a generic class init trampoline if needed. Fixes #519336.
2601
2602         * generics.cs: Add a test.
2603         
2604 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2605
2606         * method-to-ir.c: When doing a call which might be remote from
2607         shared generic code to other shared code with open type arguments,
2608         get the remoting invoke wrapper from the RGCTX and do an indirect
2609         call to it.
2610
2611 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2614         after the unbox trampoline in the full-aot case.
2615
2616 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2617         
2618         * mini.c: Move initialization of jit_mutex before debugger initialization
2619         
2620         to avoid crashes.
2621         
2622         
2623         * Info.plist: added Info.plist and link flag to enable the mono executable
2624         to access other processes. Requires codesigning of the executable to work.
2625         
2626         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2627         
2628         compile on OS X.
2629         
2630
2631 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2634
2635 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2636
2637         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2638         when the generic instance is an instantiation of a subclass of the
2639         methods class. Fixes #517166.
2640
2641 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2644         code.
2645
2646         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2647         AOTed code.
2648
2649         * CMakeLists.txt: Add minimal support for installation.
2650
2651 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2654         determine whenever a method is directly callable to a separate function.
2655
2656         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2657         needed ones as a result of the previous change.
2658
2659         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2660         type of register arrays.
2661
2662         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2663         type of register arrays.
2664
2665 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2666         
2667         Contributed under the terms of the MIT/X11 license by
2668         Jerry Maine <crashfourit@gail.com>.
2669
2670         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2671
2672 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2675
2676 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2677
2678         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2679         dump of structure return value. Fix some formatting.
2680         * cpu-s390x.md: Fix lengths of instruction sequences.
2681         * mini-s390.c: Minor formatting changes.
2682
2683 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2684
2685         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2686         Use sigaction on freebsd as well.
2687
2688 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2689
2690         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2691         uses #ifdef on it.
2692         
2693         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2694
2695 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2696
2697         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2698
2699 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2700
2701         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2702
2703 2009-06-20  Martin Baulig  <martin@ximian.com>
2704
2705         * debug-mini.c
2706         (MonoDebuggerThreadFlags): New enum typedef.
2707         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2708         (mono_debugger_thread_created): Added `gpointer func' argument;
2709         initialize the new `thread_flags' field.
2710
2711 2009-06-18  Martin Baulig  <martin@ximian.com>
2712
2713         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2714         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2715
2716         * debug-debugger.c
2717         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2718         flag in `MONO_DEBUGGER__info.runtime_info'.
2719
2720         * driver.c
2721         (mono_main): Call mini_debugger_set_attach_ok() if generics
2722         sharing is disabled.
2723
2724 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2725
2726         * aot-compiler.c (add_wrappers): Fix a warning.
2727
2728         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2729         the ppc load/store macro changes.
2730
2731 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2734
2735         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2736         not just the got symbol.
2737
2738         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2739         on ppc.
2740
2741         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2742         ppc.
2743         
2744         * aot-compiler.c: Remove some fixmes.
2745
2746         * driver.c (mono_main): Print a helpful message when cross-compiling.
2747
2748         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2749
2750         * method-to-ir.c (initialize_array_data): Do the optimization if the
2751         target byte order is little endian, instead of the host byte order.
2752
2753         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2754         wrappers into the mscorlib image, Emit a unique plt symbol for each
2755         image, emit symbols for plt entries.
2756
2757         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2758         a .size directive.
2759         
2760 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2761
2762         * aot-compiler.c (add_wrappers): Avoid calling 
2763         mono_marshal_get_type_info () since it can assert for some types.
2764
2765         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2766         ldtoken are used inside wrappers.
2767
2768         * helpers.c: Add support for prefixing tools with the arch name.
2769
2770         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2771         quantities when using ilp32.
2772
2773         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2774         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2775
2776         * image-writer.c: Use .long on ilp32.
2777
2778         * aot-compiler.c: Use 32 bit loads on ilp32.
2779         
2780 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2783
2784         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2785
2786         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2787
2788         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2789         second got slot of every aot image.
2790         
2791         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2792         aot on platforms with function pointers.
2793
2794         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2795         support for aot/full aot on ppc/ppc64.
2796         
2797         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2798         arguments which are needed on ppc.
2799
2800         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2801         argument.
2802
2803         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2804         
2805         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2806
2807         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2808
2809         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2810
2811         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2812
2813 2009-06-17  Geoff Norton  <gnorton@novell.com>
2814
2815         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2816
2817 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2820         to control whenever the dwarf writer is in xdebug or aot mode.
2821         (emit_class_dwarf_info): Use a separate abbrev for structures without
2822         children.
2823
2824         * aot-compiler.c: Pass the appending parameter to 
2825         mono_dwarf_writer_create ().
2826
2827         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2828         falls through to its next bblock. Fixes #513931.
2829
2830         * iltests.il: Add a test.
2831
2832         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2833         infor even if emit_line is FALSE, as the apple linker seems to require it.
2834
2835         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2836
2837         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2838         gcc does.
2839         (emit_fde): Ditto.
2840
2841 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2842
2843         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2844         mips build.
2845
2846 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2849         'has_call_handler' fields.
2850
2851         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2852
2853         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2854         first bblock if not needed. Fixes #512790.
2855         
2856 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2859         
2860         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2861         wrappers.
2862
2863         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2864         remoting-invoke-with-check wrappers, which are not needed when running with
2865         full-aot, since it doesn't support remoting.
2866         
2867 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2870
2871         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2872         method info, it is not used anymore.
2873
2874         * mini.h: Bump AOT file format version.
2875         
2876         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2877         word smaller.
2878
2879         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2880         change above.
2881         
2882         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2883
2884         * mini.h: Bump AOT file format version.
2885         
2886 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2887
2888         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2889         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2890         iphone.
2891
2892         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2893         of CKFINITE and FBGE for VFP.
2894
2895 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * aot-compiler.c: Don't align code to 16 bytes on arm.
2898         
2899         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2900         before the methods they belong to.
2901
2902         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2903         the full-aot case if possible, since the trampoline will be called right 
2904         away.
2905
2906         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2907         trampolines to 1024 after the change above.
2908
2909         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2910         trampoline to save 8 bytes per trampoline.
2911
2912         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2913         change above.
2914
2915 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2918
2919 2009-06-08  Martin Baulig  <martin@ximian.com>
2920
2921         * debug-mini.c
2922         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2923         (_mono_debugger_throw_exception): Don't make this static.
2924         (_mono_debugger_unhandled_exception): Likewise.
2925         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2926
2927         * debug-mini.c
2928         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2929         (_mono_debugger_throw_exception): Add function prototype.
2930         (_mono_debugger_unhandled_exception): Likewise.
2931
2932         * mini-exceptions.c
2933         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2934         arg; return the first exception handler if the exception is caught
2935         and we're running inside the debugger.
2936         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2937         improve exception handle inside runtime-invoke, check whether the
2938         exception is actually caught in the method being invoked and not
2939         by the runtime-invoke-wrapper.
2940
2941 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2942
2943         * image-writer.c: Improve support for the osx assembler.
2944
2945         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2946         support them.
2947
2948 2009-06-08  Martin Baulig  <martin@ximian.com>
2949
2950         * debug-mini.c
2951         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2952         (_mono_debugger_throw_exception): Don't make this static.
2953         (_mono_debugger_unhandled_exception): Likewise.
2954         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2955
2956         * debug-mini.c
2957         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2958         (_mono_debugger_throw_exception): Add function prototype.
2959         (_mono_debugger_unhandled_exception): Likewise.
2960
2961         * mini-exceptions.c
2962         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2963         arg; return the first exception handler if the exception is caught
2964         and we're running inside the debugger.
2965         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2966         improve exception handle inside runtime-invoke, check whether the
2967         exception is actually caught in the method being invoked and not
2968         by the runtime-invoke-wrapper.
2969
2970 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * image-writer.c (append_subsection): Don't align subsections of the
2973         debug_line section as a workaround.
2974
2975         * dwarfwriter.c: Emit line number info in the AOT case as well.
2976
2977 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2978
2979         This patch is contributed under the terms of the MIT/X11 license
2980
2981        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2982        code_len <= code_size
2983
2984 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2987
2988 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2991         invoke wrappers, we now use trampolines instead.
2992
2993 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2994
2995         * mini-darwin.c: The exception thread must not be registered with
2996         the GC.
2997
2998 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2999
3000         * mini-gc.c: Disable the code because it makes SGen crash.
3001
3002 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3003
3004         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3005         instead of asserting.
3006
3007 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3010         output file after the code has been compiled.
3011
3012 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3015
3016 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3019         entries distinction to simplify the code.
3020
3021         * mini.h: Bump AOT file format version.
3022         
3023 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * objects.cs: Fix the signature of one of the tests.
3026
3027         * mini.c (mini_create_ftnptr): New helper function, moved here from
3028         object.c.
3029         (mini_get_addr_from_ftnptr): Ditto.
3030         (mini_init): Install the new helpers.
3031
3032 2009-05-28  Martin Baulig  <martin@ximian.com>
3033
3034         Correctly initialize the debugger when embedding Mono.
3035
3036         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3037         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3038         see documentation in mini_debug_running_inside_mdb().
3039
3040         * debug-debugger.c
3041         (mini_debug_running_inside_mdb): New function to check whether
3042         we're running inside mdb.
3043
3044         * mini.c (mini_init): Call mini_debugger_init() if we're running
3045         inside the debugger.
3046
3047         * driver.c (mono_main): Moved the call to mini_debugger_init()
3048         into mini_init() to make this work when embedding Mono.
3049
3050         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3051         calls to mini_debugger_init().
3052
3053         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3054         mono_debugger_main() -> mini_debugger_main() and put them inside a
3055         `MONO_DEBUGGER_SUPPORTED' conditional.
3056
3057 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3058
3059         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3060         this is no longer in use.
3061         * mini.h: Same.
3062
3063 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3066
3067         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3068         methods.
3069
3070 2009-05-27  Martin Baulig  <martin@ximian.com>
3071
3072 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3073
3074         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3075         long_conv_to_r_un to 64 bits.
3076
3077         * cpu-x86.md: Increase the instruction size due to the changes.
3078
3079         * iltests.il.in: Add regression test.
3080
3081         Fixes #467201.
3082
3083 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3084
3085         * objects.cs: Move the previous test from basic.cs to here.
3086
3087 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3088
3089         * basic.cs: Add regression test for #506915.
3090
3091 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3092
3093         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3094         optimization we must check the bb of the first byte of stobj as
3095         it's the only one set in cil_offset_to_bb.
3096
3097         Fixes #506915.  
3098
3099 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * image-writer.c: Fix pointer directive on ppc64.
3102
3103 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * image-writer.c (asm_writer_emit_section_change): Avoid using
3106         .bss subsections on ppc too.
3107
3108 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * image-writer.c: Fix the definition of TARGET_ASM_....
3111         
3112         * image-writer.c: Fix the emission of assembler directives in the last
3113         change.
3114
3115         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3116         exception throwing code to accomodate ppc64.
3117
3118         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3119         size to work on ppc64 too.
3120
3121         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3122         too.
3123
3124         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3125         the assembler dialect instead of using platform specific defines.
3126
3127 2009-05-22  Geoff Norton  <gnorton@novell.com>
3128
3129         * mini-arm.c (get_call_info): If a structure is split between the stack
3130         and argument registers, we should not advance the stack pointer by the entire
3131         native size, but just by the amount that spilled.
3132
3133 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3136         correctly.
3137
3138 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3139
3140         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3141         wrappers normally.
3142         
3143         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3144         methods so wrapper don't get added twice.
3145         (add_generic_instances): Don't add methods of arrays.
3146
3147         * generics.cs: Mark one test as !FULLAOT.
3148
3149 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3150
3151         * mini-x86.c (emit_move_return_value): Remove unused vars.
3152
3153 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3154
3155         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3156         decomposing 8 bytes structs into a LCALL.
3157
3158         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3159         pointer for where to store the returned regs.
3160
3161         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3162         state the concern.
3163
3164         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3165
3166 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3167
3168         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3169         without getenv.
3170
3171 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3174
3175         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3176         generics.
3177
3178 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         * local-propagation.c (mono_local_cprop): Avoid local propagation
3181         across paired add/sub if the first instruction dest reg is it's
3182         source reg. For example:
3183
3184         int_add_imm R12 <- R12 [1] clobbers: 1
3185         int_sub_imm R42 <- R12 [1] clobbers: 1
3186
3187         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3188         maintain the math identify.
3189
3190         Fixes #505375.
3191
3192 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3193
3194         * Makefile.am: avoid going on the network just to get the revision,
3195         use git log instead
3196
3197 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3198
3199         Fixed estimate for short branches on amd64 (they were off mark, and
3200         enabling call prolog-epilog instrumentations caused assertions).
3201         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3202         estimate for the maximum length of this basic block.
3203         * mini-amd64.c:
3204         - mono_arch_emit_prolog: compute max_length for each basic block
3205           (instead of max_offset), and inflate size estimate also for entry bb
3206           in case of code instrumentation.
3207         - mono_arch_output_basic_block: get rid of "cpos" (the current
3208           estimated "position" in the code), and always use "offset" instead,
3209           which is accurate; at the beginning of the function quickly recompute
3210           max_offset for all the remaining blocks, starting from the current
3211           cfg->code_len (which is correct, and not estimated) and using the
3212           estimated block lengths computed previously.
3213
3214 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3215
3216         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3217         functions, it is already done in the caller.
3218
3219         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3220
3221         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3222         MONO_ARCH_GSHARED_SUPPORTED define.
3223
3224         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3225
3226         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3227         function.
3228
3229 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3232         call to mono_marshal_get_rgctx_invoke ().
3233
3234         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3235         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3236         gshared use the static rgctx trampolines now.
3237         
3238         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3239         platform supports it.
3240
3241 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3242
3243         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3244
3245         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3246
3247 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3248
3249         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3250
3251         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3252         for ppc.
3253
3254 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3255
3256         Made it possible for mono_arch_instrument_epilog to preserve
3257         argument registers, otherwise instrumenting the "epilogue" before
3258         a tail call would clobber them.
3259         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3260         if like mono_arch_instrument_epilog but with an additional parameter
3261         that states if argument registers must be preserved.
3262         * mini.c: implemented mono_arch_instrument_epilog as a call to
3263         mono_arch_instrument_epilog_full without asking to preserve argument
3264         registers (this makes the existing code work as usual).
3265         * mini-amd64.c:
3266         - mono_arch_instrument_epilog: add parameter to transform it into
3267         mono_arch_instrument_epilog_full, and preserve argument registers
3268         when required.
3269         - mono_arch_output_basic_block, OP_TAILCALL case: call
3270         mono_arch_instrument_epilog_full.
3271         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3272         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3273         only transformed mono_arch_instrument_epilog into
3274         mono_arch_instrument_epilog_full.
3275
3276 2009-05-15  Geoff Norton  <gnorton@novell.com>
3277
3278         * mini-darwin.c: This works on arm now.
3279
3280 2009-05-14  Geoff Norton  <gnorton@novell.com>
3281
3282         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3283         embedding api.
3284
3285 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3286
3287         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3288         label names.
3289
3290         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3291         wrappers during full aot mode correctly.
3292
3293         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3294         methods correctly.
3295
3296         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3297         mono_metadata_type_hash ().
3298
3299 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3300
3301         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3302         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3303         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3304         Removed MONO_INST_BRLABEL from the instruction flags, and the
3305         remaining code that used it, because we do not support branches inside
3306         basic blocks (and branch target labels) anymore.
3307         * Makefile.am: As part of the above cleanup, remove reference to
3308         BURG files which don't exist anymore.
3309
3310 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3311
3312         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3313         osx.
3314
3315         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3316         to use mono_arch_throw_corlib_exception.
3317
3318         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3319         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3320
3321         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3322         domain mempool.
3323
3324         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3325
3326         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3327         for the got to make debugging easier and to avoid confusing it with the
3328         system got.
3329         
3330         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3331         method so a breakpoint can be set when using gdb.
3332
3333 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3334
3335         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3336         on mono_method_get_imt_slot ().
3337
3338         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3339         num_decodes variables.
3340
3341         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3342         change as it doesn't seem to work.
3343         
3344         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3345         wrappers.
3346
3347 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3350         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3351
3352         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3353         builder when using full aot.
3354
3355         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3356         here, it is already handled.
3357         
3358         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3359         correctly for IMT.
3360
3361         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3362
3363         * mini-arm.h: Enable IMT for full aot.
3364         
3365         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3366         arch doesn't support it.
3367
3368         * mini.c (mini_init): Don't disable IMT for full aot if the
3369         architecture supports it.
3370
3371         * mini.h (MonoAotTrampoline): New enum containing the different types
3372         of 'numerous' trampolines.
3373         (MONO_AOT_FILE_VERSION): Bump this.
3374
3375         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3376         static rgctx trampolines. Add support for full-aot IMT thunks.
3377
3378         * mini-amd64.h: Enable IMT for full aot.
3379
3380         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3381         to exclude tests belonging to a category.
3382
3383         * generics.cs: Mark some tests with a !FULLAOT category.
3384
3385         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3386         generics tests.
3387
3388 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3389
3390         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3391         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3392         (emit_plt): Fix a warning.
3393
3394 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3397         back into aot-compiler.c to a place where the other functions shared by
3398         the runtime and aot compiler are.
3399         
3400         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3401         as done previously, instead of in MonoAotFileInfo, since pointers might have
3402         alignment requirements.
3403
3404         * mini.h: Bump AOT file format version.
3405
3406 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3407
3408         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3409         that is used at runtime from the aot-compiler.c, this makes it
3410         work on setups that remove the AOT compiler from the output
3411         image. 
3412
3413 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3416         PPC.
3417
3418         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3419
3420         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3421
3422         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3423         stuff to mono_arch_decompose_long_opts ().
3424         (mono_decompose_opcode): Remove some dead code.
3425
3426 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3427
3428         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3429         cmethod can be null for quite a some reasons.
3430
3431 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3432
3433         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3434
3435 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3438
3439 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3442         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3443         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3444         calls returning structures by addr on amd64.
3445
3446         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3447
3448         * iltests.il.in: Restructure the tail call tests a bit.
3449         
3450 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3453         for virtual methods too.
3454
3455 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3456
3457         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3458         due to regression in verifying System.dll.
3459
3460 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3463         in dynamic methods.
3464
3465         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3466         instances.
3467
3468         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3469         g_str_hash () which can change.
3470
3471         * driver.c (mini_regression): Disable optimizations not supported by
3472         the cpu. Fixes #500019.
3473
3474         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3475         build.
3476
3477 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3480         to the latest LLVM code.
3481
3482 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3485
3486 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3489         x86/amd64.
3490
3491         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3492         no longer saving offsets, so just save the patch types along with the other
3493         info.
3494         * aot-runtime.c (load_patch_info): Update after the changes to 
3495         encode_patch_list ().
3496         (decode_got_entry): Removed, merged into load_patch_info ().
3497         (is_shared_got_patch): Removed, call the same function from
3498         aot-compiler.c.
3499
3500         * mini.h: Bump aot file format version.
3501         
3502         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3503         half-finished no-dlsym code.
3504
3505         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3506         option.
3507
3508         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3509         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3510
3511 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3514         buffer length to work with AOT code.
3515
3516         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3517         ldfld/stfld opcodes.
3518
3519         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3520         as it is not used.
3521
3522         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3523
3524         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3525
3526         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3527         LLVM API.
3528
3529         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3530         if needed. Don't decompose long operations when using llvm.
3531
3532 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3533
3534         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3535         PAGESIZE constant.
3536
3537         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3538
3539 2009-05-03  Martin Baulig  <martin@ximian.com>
3540
3541         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3542         mono_debugger_insert_method_breakpoint() since the class init
3543         handler we're inserting at the top of the method already gives us
3544         a notification.
3545
3546 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3549         to mono_arch_decompose_long_opts () for x86 and arm.
3550
3551 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3554         TARGET_AMD64 here.
3555
3556 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3557
3558         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3559         JIT code.
3560
3561 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3564         number of trampolines used in full-aot mode.
3565
3566         * aot-compiler.c: Add an ntrampolines option to set the number of 
3567         trampolines emitted in full-aot mode.
3568
3569 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3572         a volatile load. Get rid of get_tempname (), llvm assigns names
3573         automatically.
3574
3575         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3576         builder function.
3577
3578         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3579         a value.
3580
3581         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3582         level 1.
3583
3584         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3585         to the same register as a fixed sreg2. Fixes #497271.
3586
3587         * iltests.il.in: Add a new test.
3588
3589 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3592         stack, since pushes complicate exception handling.
3593
3594         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3595         the stack if they are passed using moves.
3596
3597         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3598
3599         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3600         when using llvm.
3601
3602         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3603         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3604         of FMOVE if it is an R4.
3605
3606 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3609
3610         * mini.h (LLVMCallInfo): New structure to store calling convention 
3611         information for the LLVM back end similar to the CallInfo structures in 
3612         the back-ends.
3613
3614         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3615         call information in a format usable by LLVM.
3616         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3617
3618         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3619         mono_llvm_emit_call () when compiling using LLVM.
3620
3621         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3622         comments to all functions. Fix memory leaks. Add a public init/cleanup
3623         function.
3624
3625         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3626
3627         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3628         mono_array_new_va () jit icall.
3629         
3630 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3631
3632         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3633         multiple machine description files to be specified.
3634         * mini-ops.h: fixes for cross-compilation.
3635
3636 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3637
3638         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3639         some porting work.
3640
3641 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3644         to prevent asserts in various passes. Fixes #497220.
3645
3646 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3649         a racy assert.
3650
3651         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3652         table to avoid duplicates.
3653
3654         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3655         
3656         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3657         option is used.
3658
3659 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3660
3661         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3662         is for method or field access.
3663
3664 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3667         a Value to stdout.
3668
3669         * mini-llvm.c (mono_llvm_emit_method): Use it.
3670         
3671         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3672         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3673         on volatile values.
3674
3675         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3676         synchronized methods.
3677
3678         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3679
3680         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3681
3682         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3683         OP_LOADI8_MEM.
3684
3685         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3686         allowing some options to be set dynamically.
3687
3688 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3691         unconditional branch.
3692
3693         * mini.h (MonoTrampolineType): Add new trampoline type 
3694         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3695         compiled code.
3696
3697         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3698         function.
3699
3700         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3701         creation function.
3702
3703         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3704         is enabled. Instead, use the llvm vcall trampoline.
3705         
3706         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3707
3708         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3709         
3710         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3711         functions.
3712
3713         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3714         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3715
3716         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3717         OP_IA64_CSET opcode.
3718
3719         * mini.c: Fix a warning.
3720
3721         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3722         THROW to the appropriate llvm type.
3723
3724 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * mini.c (mini_method_compile): Add statistics for methods JITted
3727         with/without LLVM.
3728
3729 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3732         OP_IA64_CMP_<cond>_IMM opcodes.
3733
3734 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3735
3736         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3737         corlib exceptions.
3738
3739         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3740         correctly.
3741
3742         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3743         GENERICINST.
3744
3745 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3746
3747         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3748
3749 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3752         support.
3753
3754         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3755         rgctx invoke trampolines for x86.
3756
3757         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3758         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3759         (mono_arch_get_vcall_slot): Simplify this.
3760
3761 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3764         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3765
3766 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3769         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3770
3771         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3772
3773         * liveness.c (visit_bb): Remove a needless assert.
3774
3775 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3778         full aot support to the arch specific code.
3779
3780         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3781
3782         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3783
3784         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3785         
3786         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3787         collect information about the delegate invoke impl trampolines.
3788
3789         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3790         to save trampolines during full-aot mode.
3791
3792         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3793         creation function which returns a trampoline which sets the rgctx
3794         argument.
3795         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3796         wrapper if possible.
3797         (mono_delegate_trampoline): Ditto.
3798
3799         * mini.c (mono_jit_runtime_invoke): Ditto.
3800
3801         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3802         
3803         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3804
3805         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3806         
3807 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3808
3809         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3810         just setting the opcode to OP_NOP.
3811
3812 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * mini.c (mini_method_compile): Put the last change inside an 
3815         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3816         
3817         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3818         and extend live ranges to cover the whole method when using xdb.
3819
3820         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3821         do it in the trampolines.
3822
3823         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3824         needed.
3825
3826         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3827         
3828         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3829         call code in full-aot mode since IMT is disabled there.
3830         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3831         new JIT no longer has that restriction.
3832
3833         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3834
3835         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3836         a more compact format.
3837         (mono_aot_wrapper_name): New function to return a unique name for a
3838         wrapper method, also used by the AOT runtime.
3839
3840         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3841         aot-compiler.c.
3842
3843         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3844         when a ICollection<T> etc is encountered.
3845         (add_generic_instances): Process method arguments/locals too.
3846         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3847         trampoline names.
3848
3849         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3850         
3851 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3854
3855         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3856
3857         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3858         representing the result of the decomposition. Nullify instructions
3859         instead of setting them to OP_NOP since nops can't have registers
3860         set.
3861
3862 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3865         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3866         info. Strip 'mapping symbols' on ARM.
3867
3868         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3869         
3870         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3871         this with the native genmdesc.
3872
3873 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3874
3875         * aot-runtime.c:  Fixing the MSVC build.
3876
3877         Code is contributed under MIT/X11 license.
3878
3879 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3882         JITted code depends on it.
3883
3884 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3885
3886         * aot-compiler.c: Use new MonoGenericParam accessors.
3887
3888 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3889
3890         Reduce memory usage and improve correctness wrt MonoGenericParam
3891         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3892         handing.  Avoid allocating MonoGenericParams, but use the ones in
3893         the container itself.
3894
3895 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3896
3897         * tasklets.c: Return exceptions in the out argument.
3898
3899 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3902         opcode. Use pointer types in more places instead of casting them to 
3903         integers.
3904
3905         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3906         optimizations.
3907         (mono_llvm_optimize_method): New helper function to optimize a method.
3908
3909         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3910         widening code so it could be called from more places.
3911         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3912         code paths in the call opcodes.
3913
3914 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3915
3916         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3917
3918 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3919
3920         * dwarfwriter.c: Use _ to separate class name 
3921         components as gdb can't handle '.'. Represent reference variables
3922         as 'class <NAME>&'.
3923         
3924         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3925
3926         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3927         
3928         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3929
3930         * gc-test.cs: New file with GC stack marking tests.
3931         
3932         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3933         negative numbers for vfp.
3934
3935         * basic-float.cs: Add a test.
3936         
3937 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3938
3939         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3940
3941 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3942
3943         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3944         part of tasklet/continuation support.
3945
3946 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3949         amd64 opcodes inside an ifdef.
3950
3951         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3952         of complex types.
3953         
3954         * dwarfwriter.c (emit_type): Emit the class info for classes.
3955
3956 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3959
3960         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3961
3962         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3963
3964         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3965
3966 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3969
3970         * mini-llvm.c: Update comments.
3971
3972         * mini.h (COMPILE_LLVM): New macro.
3973
3974         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3975
3976         * ssa.c (mono_ssa_compute): Ditto.
3977         
3978         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3979         the unwind ops from a DWARF FDE.
3980
3981         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3982         methods by extracting the dwarf unwind ops from the unwind info generated
3983         by LLVM.
3984         
3985         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3986         calls.
3987
3988         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3989         addressing modes.
3990
3991 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * Makefile.am (llvm_sources): Enable this.
3994
3995         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3996         failing back to the JIT if something cannot be handled.
3997
3998         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3999         compiling with LLVM.
4000
4001         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4002         compiling with LLVM.
4003
4004         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4005         compiling with LLVM.
4006
4007         * mini-ops.h: Add a few opcodes needed by LLVM.
4008
4009         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4010         has no unwind info.
4011
4012         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4013         backend.
4014
4015         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4016
4017         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4018
4019 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4020
4021         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4022         ridiculously large methods.
4023
4024 2009-03-31  Martin Baulig  <martin@ximian.com>
4025
4026         * debug-debugger.c (debugger_remove_breakpoint): Call
4027         mono_debugger_remove_class_init_callback ().
4028
4029 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4030
4031         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4032         right before emitting code, not at the start.
4033
4034         * mini.c (mono_postprocess_patches): Extract this into a separate function
4035         from mono_codegen ().
4036
4037         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4038         byref types correctly.
4039
4040 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4043         by the last change.
4044
4045 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4048         indirect calls, this avoids problems where get_vcall_slot () would get
4049         confused by the native code for the instruction preceeding the call.
4050         (mono_arch_get_vcall_slot): Simplify this.
4051         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4052
4053         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4054         register allocator now seems to depend on them instead of the data in
4055         cpu-<ARCH>.md.
4056
4057         * mini.c (mini_method_compile): Throw the correct type of exception if
4058         mono_method_get_header () fails because of a loading error.
4059
4060 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * mini.c (mini_method_compile): Clear the loader error if the method
4063         header cannot be decoded.
4064
4065         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4066         interface methods on proxies correctly.
4067
4068         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4069         this argument for vtype methods. Add precise liveness info for arguments.
4070
4071         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4072         LIVERANGE_START/END opcodes.
4073
4074         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4075         for arguments and values in registers.
4076
4077 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4080         return a valuetype. Fixes #487518.
4081
4082         * iltests.il: Add a test.
4083         
4084         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4085
4086         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4087         closed over a null reference correctly.
4088
4089 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4090
4091         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4092
4093 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4094
4095         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4096         allocated to the same registers as fixed sregs.
4097
4098 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4099
4100         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4101         ATOMIC_CAS_IMM ops.
4102
4103         * method-to-ir.c: Handle more cases for
4104         Interlocked.CompareExchange.
4105
4106         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4107         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4108         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4109
4110 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * aot-runtime.c (decode_method_ref): Fix a warning.
4113
4114         * unwind.c (mono_unwind_frame): Ditto.  
4115
4116 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4119         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4120
4121         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4122         fix the handling of large values in the ALU_PC_G0_NC relocation.
4123
4124 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4127
4128 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4129
4130         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4131         ops.
4132
4133 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4134
4135         * method-to-ir.c: MINI_OP3 needs a comma.
4136
4137         * method-to-ir.c, mini.h, mini.c: Remove
4138         mono_init_op_sreg_counts ().
4139
4140 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4143         OP_JMP.
4144         
4145         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4146         assertion.
4147
4148         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4149
4150         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4151         code somewhat.
4152
4153 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4154
4155         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4156         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4157         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4158         operations.
4159
4160 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * driver.c: Change location of gc_wrapper.h.
4163
4164         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4165         inside finally clauses correctly. Fixes #485721.
4166
4167         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4168         after the change above.
4169
4170         * exceptions.cs: Add a test.
4171         
4172 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4173
4174         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4175
4176         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4177         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4178         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4179
4180         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4181         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4182
4183 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4184
4185         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4186         Simplify logic for ensure_method_is_allowed_to_call_method. 
4187         Handle wrappers on callers.
4188
4189 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4190
4191         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4192         them don't run yet.
4193
4194         * basic-simd.cs: Fix the names of some test methods.
4195
4196 2009-03-18  Geoff Norton  <gnorton@novell.com>
4197
4198         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4199
4200 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4203
4204 2009-03-17  Jb Evain  <jbevain@novell.com>
4205
4206         * driver.c: remove now uneeded call to mono_gc_base_init before
4207         mono_profiler_load.
4208
4209 2009-03-17  Jb Evain  <jbevain@novell.com>
4210
4211         * dwarfwriter.c (token_handler): handle more cases.
4212
4213 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4214
4215         * method-to-ir.c: Remove more dead code (that was required only
4216         because of method_is_safe). Fix compiler warnings.
4217
4218 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4219
4220         * method-to-ir.c: Remove unneeded/useless method_is_safe
4221         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4222
4223 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4224
4225         * mini.c (mini_method_compile): Print the method been compiled with
4226         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4227         for people not familiar with the runtime.
4228
4229 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4232         a managed object which is later put into a GList. Return its class instead.
4233
4234         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4235         stack slots when using sgen.
4236
4237 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4240
4241 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4242
4243         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4244         > so it works on the first vreg as well.
4245
4246 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4247
4248         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4249         trigger randomly.
4250
4251         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4252         
4253         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4254         implement GArray.
4255
4256 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4259         native->IL offset mapping.
4260
4261 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4264
4265         * basic.cs: Add a test.
4266
4267 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4268
4269         * mini-x86.c (mono_arch_output_basic_block): Use different
4270         registers in case the ones we want to overwrite are used by the
4271         other operand.  Fixes regression in #480807.
4272
4273 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4274
4275         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4276
4277         * dwarfwriter.c (emit_line_number_info): The line number info for
4278         IL code was off by one. Fix that.
4279
4280         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4281         stack.
4282
4283 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4284
4285         Contributed under the terms of the MIT/X11 license by Steven
4286         Munroe <munroesj@us.ibm.com>.
4287
4288         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4289         Fixes #483462.
4290
4291 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4294         as well.
4295
4296 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4299         the delegate ctor handling code. Fixes #482638.
4300         
4301         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4302         #481458.
4303
4304         * iltests.il.in: Add a test.
4305         
4306         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4307         mini-posix.c.
4308
4309 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4310
4311         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4312         is shared generic code, return the trampoline, even if the method
4313         has already been compiled.  Fixes #479763.
4314
4315         * mini.c, mini.h: New function
4316         mono_jit_find_compiled_method_with_jit_info() which is the same as
4317         mono_jit_find_compiled_method() but also returns the jit info.
4318
4319 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4320
4321         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4322         for methods which actually have one.  For all other methods, make
4323         sure the this argument var is live the whole method.
4324
4325         * mini.c (mini_method_compile): Every shared method has a
4326         this/vtable/mrgctx info.  Fixes #480807.
4327
4328 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4329
4330         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4331         generic/imt thunks where some entries branch through the vtable,
4332         while other entries branch directly.
4333
4334 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4337
4338         * mini-windows.c: Ditto.
4339         
4340         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4341         ctors.
4342
4343 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4346         down an assert.
4347
4348 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4349
4350         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4351         #481403.
4352
4353 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4354
4355         * exceptions-x86.c: Include debug-mini.h - fixes build.
4356
4357 2009-03-04  Martin Baulig  <martin@ximian.com>
4358
4359         * debug-mini.c: Clean up the exception API and add documentation.
4360         (mono_debugger_handle_exception): New public method; this is
4361         called when throwing an exception or encountering an unhandled one.
4362         (mono_debugger_call_exception_handler): Formerly known as
4363         mono_debugger_handle_exception(); this is used to tell the
4364         debugger that we're about to invoke an exception handler.
4365
4366 2009-03-04  Martin Baulig  <martin@ximian.com>
4367
4368         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4369         ../metadata/mono-debug-debugger.c; save and reset exception state.
4370
4371 2009-03-02  Martin Baulig  <martin@ximian.com>
4372
4373         * debug-mini.c: Moved the debugger exception handling here from
4374         ../metadata/mono-debug-debugger.c.
4375
4376         * debug-mini.h
4377         (MonoDebuggerExceptionAction): New exception typedef.
4378
4379         * debug-mini.c
4380         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4381
4382         * exceptions-amd64.c
4383         (mono_amd64_throw_exception): Use the new debugger exception
4384         handling code.
4385
4386         * mini-exceptions.c
4387         (mono_handle_exception_internal): Don't call
4388         mono_debugger_unhandled_exception() here.
4389
4390 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * mini.c aot-compiler.c: Update after the changes to 
4393         mono_marshal_get_runtime_invoke ().
4394
4395         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4396         Virtual generic methods might not have method->slot set, work around
4397         that.
4398
4399         * generics.cs: Add a test.
4400
4401 2009-03-02  Geoff Norton  <gnorton@novell.com>
4402
4403         * mini.c:
4404         * driver.c: Allow signal chaining of SIGFPE as well.
4405
4406 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4409         this since it now receives the method not its generic context in the
4410         IMT reg.
4411
4412         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4413         generic/imt thunks where some entries branch through the vtable, while
4414         other entries branch directly.
4415
4416         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4417
4418         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4419         support for interface methods as well.
4420
4421         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4422         using the normal IMT thunks.
4423
4424         generics.cs: Add new tests.
4425         
4426         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4427         the generic inst to the generic imt thunks. This fixes AOT support, 
4428         improves consistency with the normal IMT thunks, and makes it easier to
4429         add support for interface generic virtual methods later.
4430
4431         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4432         
4433 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4434
4435         * driver.c (mono_set_signal_chaining): New public API function to enable
4436         signal chaining on POSIX platforms.
4437
4438         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4439         (si@lindenlab.com) to implement signal chaining. The original patch was
4440         contributed under the MIT X/11 license:
4441         https://bugzilla.novell.com/show_bug.cgi?id=318894
4442
4443 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4444
4445         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4446         too until it can be made to run on amd64.
4447
4448 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4449
4450         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4451         to  get_generic_context_from_code () + get_call_info () if possible.
4452
4453 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4454
4455         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4456         suspend-on-sigsegv functionality.
4457
4458         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4459         to suspend when a native SIGSEGV is received. This is useful for debugging
4460         crashes which don't happen under gdb, since a live process contains more
4461         information than a core file.
4462
4463         * mini-exceptions.c (mono_print_thread_dump): Use 
4464         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4465
4466         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4467
4468         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4469         
4470         * basic-float.cs: Disable the tests which currently fail on amd64.
4471
4472         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4473         value to mono_arch_patch_callsite () to fix crashes.
4474         
4475         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4476
4477 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4478
4479         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4480         nop code by patching the call address to point to the nullified class init
4481         trampoline, as the former does not seem to be safe on SMP machines.
4482
4483 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4484
4485         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4486         they were wrong.
4487
4488 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * basic-float.cs basic-calls.cs: Fix warnings.
4491
4492 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4493
4494         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4495         correct frame pointer in the LMF.  Should fix #478394.
4496
4497 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4498
4499         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4500
4501         * image-writer.c: Make the binary writer less verbose.
4502
4503 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4506         are called from runtime invoke wrappers.
4507
4508 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * cpu-ppc.md (store_memindex): Increase the size of this.
4511
4512 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4513
4514         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4515
4516         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4517
4518         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4519         OP_LCONV_TO_R_UN.
4520
4521         Last fix for of #467201.
4522
4523
4524 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4527
4528         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4529         and long_conv_to_r8_2:
4530
4531         Fixed part of #467201.
4532
4533 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4534
4535         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4536
4537         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4538         conversion to 32 bits.
4539
4540         * cpu-x86.md: Increase the size of int_conv_to_r4.
4541
4542         * basic-float.cs: Add a test for this.
4543
4544         Fixed part of #467201.
4545
4546 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4547
4548         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4549
4550         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4551         conversion to 64 bits.
4552
4553         * basic-float.cs: Add a test for this.
4554
4555         Fixed part of #467201.
4556
4557 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4558
4559         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4560
4561         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4562         This behavior is compatible with MS.
4563
4564         * iltest.il.in: Add a test for this.
4565
4566         Fixed part of #467201.
4567
4568 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4569
4570         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4571
4572         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4573         change the precision of the value.
4574
4575         * cpu-x86.md: Define len for float_conv_to_r4.
4576
4577         * basic-float.cs: Add a test for this.
4578
4579         Fixed part of #467201.
4580
4581 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4582
4583         * mini.c: Adjust locking order to the new semantics where the loader lock
4584         comes first.
4585
4586 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * aot-runtime.c:
4589         * mini-amd64.c:
4590         * mini-arm.c:
4591         * mini-ia64.c:
4592         * mini-mips.c:
4593         * mini-ppc.c:
4594         * mini-sparc.c:
4595         * mini-trampolines.c:
4596         * mini-x86.c:
4597         * mini.c:
4598         * tramp-alpha.c:
4599         * tramp-amd64.c:
4600         * tramp-arm.c:
4601         * tramp-hppa.c:
4602         * tramp-ia64.c:
4603         * tramp-mips.c:
4604         * tramp-ppc.c:
4605         * tramp-s390.c:
4606         * tramp-s390x.c:
4607         * tramp-sparc.c:
4608         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4609
4610 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4613         as it is incorrect.
4614
4615 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4618         for cctors if needed.
4619
4620 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4621
4622         * mini-ppc.c: Fix build on Darwin.
4623
4624 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4627         version instead of 3 as valgrind doesn't like version 3.
4628
4629         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4630
4631         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4632         usable for hashing methods.
4633         (emit_extra_methods): Use the new hash to avoid putting every method in the
4634         same hash bucket.
4635
4636         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4637
4638         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4639         whenever a method ref could match a method.
4640         
4641         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4642         test to fail.
4643         
4644         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4645         methods refs.
4646
4647         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4648
4649         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4650         the encoding buffer.
4651
4652         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4653         mono_method_get_header () on inflated methods as an optimization.
4654
4655 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * ssa.c (fold_ins): Fix another crash if the instruction following the
4658         switch was optimized away.
4659
4660 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4661
4662         Contributed under the terms of the MIT/X11 license by Steven
4663         Munroe <munroesj@us.ibm.com>.
4664
4665         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4666
4667 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4670         around the mono_domain_alloc calls, it is now done by the functions
4671         themselves.
4672
4673         * aot-compiler.c (compile_method): Only add wrappers referenced by
4674         the method if compiling with full AOT.
4675         (mono_compile_assembly): Error out if --aot=full is specified on
4676         a platform where it is not supported.
4677
4678         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4679         on ARM too.
4680
4681         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4682         AOT support.
4683
4684         * aot-runtime.c (load_named_code): Handle 
4685         mono_arm_throw_exception_by_token.
4686
4687         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4688
4689         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4690         unaligned.
4691
4692         * Makefile.am (fullaotcheck): Exit if a test fails.
4693
4694         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4695         on ARM.
4696         (mono_compile_assembly): Handle the assembler failing.
4697
4698         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4699         accepting subsections of .bss.
4700
4701         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4702         was optimized away.
4703
4704         * aot-compiler.c: Remove some unused includes.
4705         
4706         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4707         now in MonoImageWriter.
4708
4709         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4710         code sequence which matches a non-virtual call. Fixes #472654.
4711
4712 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4715         xdebug code.
4716         
4717         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4718         use the image/dwarf writers directly.
4719
4720         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4721         field.
4722
4723         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4724         MonoDwarfWriter.
4725
4726         * image-writer.h: Fix some typos.
4727
4728         * dwarfwriter.h dwarfwriter.c: New files.
4729         
4730         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4731         separate module.
4732
4733         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4734         argument to return unwind info.
4735
4736         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4737
4738         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4739         
4740         * aot-runtime.c (decode_method_ref): Add a case for 
4741         MONO_AOT_METHODREF_WRAPPER_NAME.
4742
4743         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4744         for AOT.
4745
4746         * aot-compiler.c (encode_method_ref): Use the new constants.
4747
4748         * aot-runtime.c (decode_method_ref): Ditto.
4749
4750         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4751         be compiled, not the icall itself.
4752
4753 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4756         using decode_method_ref ().
4757
4758         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4759         convert it to an in32. Fixes #475859.
4760
4761         * arrays.cs: Add a test.
4762
4763 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4764
4765         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4766         OP_LCONV_TO_U2.
4767
4768         * basic-long.cs: Add a test.
4769
4770 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4771
4772         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4773         remove the frame pointer in leaf methods which don't receive any
4774         arguments, don't throw exceptions and don't do dynamic stack
4775         allocations.
4776
4777 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4780         the fail_tramp changes. Hopefully fixes #475132.
4781
4782 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4783
4784         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4785         instead of mono_metadata_signature_dup_full.
4786
4787 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4790         for processing jump tables. Fixes #473787.
4791
4792 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4793
4794         * mini-generic-sharing.c: mini_method_get_context() just calls
4795         mono_method_get_context_general() now.
4796
4797         * mini.c, mini.h: Moved get_object_generic_inst(),
4798         construct_object_context_for_method() and
4799         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4800
4801 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4804         basic block fell through to its successor bblock without a branch. Fixes
4805         #474718.
4806
4807         * iltests.il.in: Add a test.
4808         
4809         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4810         (can_encode_patch): We can now handle arrays of generic parameters and
4811         array methods.
4812
4813         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4814
4815         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4816         the AOT file to avoid some #ifdefs in aot-runtime.c
4817
4818         * mini.h: Bump AOT file format version.
4819
4820 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * Makefile.am (fullaotcheck): Make this run the tests.
4823
4824         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4825
4826 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4827
4828         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4829         individually.  Fixes #473482.
4830
4831 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4832
4833         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4834
4835 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4836
4837         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4838         (mono_compile_assembly): Hush compile warnings about
4839         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4840         code path.
4841
4842 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4843
4844         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4845
4846         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4847
4848         * aot-compiler.c: Fix arm support.
4849
4850         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4851         img_writer_emit_unset_mode () function.
4852
4853         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4854         (mono_unwind_get_dwarf_pc_reg): Ditto.
4855
4856         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4857         Move almost all platform specific code to a set of arch_ functions, 
4858         and document them to ease porting.
4859         
4860         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4861
4862         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4863
4864         * aot-compiler.c: Extract the image writing functionality into a separate
4865         module to reduce the size of this file.
4866
4867 2009-02-09  Geoff Norton  <gnorton@novell.com>
4868
4869         * mini-s390.c: Fix the signature of emit_sig_cookie.
4870
4871 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4874
4875         * aot-runtime.c (is_shared_got_patch): Ditto.
4876
4877         * aot-runtime.c (load_named_code): Cope with the fact that 
4878         decode_got_entry () won't decode the patch fully if its corresponding got
4879         entry is already filled.
4880         
4881         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4882         Initialize *ji.
4883         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4884
4885         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4886         as the moving pointer instead of 'buf' for consistency with the rest of the
4887         codebase.
4888         (mono_arch_create_monitor_exit_trampoline): Ditto.
4889
4890         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4891         generic_class_init trampolines.
4892         (add_generic_class): Extract some code from add_generic_instances () into a
4893         separate function so it can be called from other places too.
4894         (compile_method): Call add_generic_class () for the classes of inflated methods
4895         referenced by the method.
4896         (can_encode_patch): Allow references to generic parameters.
4897
4898         * aot-runtime.c: Add support the patches required by the new trampolines.
4899         
4900         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4901         support.
4902
4903         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4904         full-aot support.
4905
4906         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4907         this from get_throw_pending_exception, make the signature full aot compatible.
4908
4909         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4910
4911         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4912
4913         * exceptions.cs: Add a test.
4914
4915 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4918         use the DWARF_DATA_ALIGN constant instead.
4919
4920         * exception-<ARCH>.c: Update after the above change.
4921
4922         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4923         dwarf unwinder.
4924
4925         * mini-arm.c: Enable the dwarf unwinder.
4926
4927         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4928         instead of mono_class_setup_vtable ().
4929
4930 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4931
4932         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4933         dwarf unwinder.
4934
4935         * mini-x86.h: Enable the dwarf unwinder.
4936
4937 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4938
4939         Fix mcs/tests/test-7.cs
4940         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4941         2009-02-03.
4942
4943 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4944
4945         * mini.c (print_jit_stats): Remove some unused statistics.
4946
4947 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4948
4949         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4950
4951 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4952
4953         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4954         the method we get from mono_object_get_virtual_method() because
4955         that function does it properly, now.
4956
4957 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4958
4959         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4960         opcodes. Fixes #472775.
4961
4962 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4963
4964         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4965         fact that mono_find_jit_info() sometimes returns the context
4966         corresponding to the jit info in new_ctx.  Fixes #472600.
4967
4968 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4969
4970         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4971         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4972         klass->enum_basetype directly.
4973
4974         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4975         enum subtypes.
4976
4977         * unwind.c: Avoid 0 sized arrays.
4978
4979 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4980
4981         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4982         size on systems with 64k pages. Fixes #471389.
4983
4984 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4985
4986         Contributed under the terms of the MIT/X11 license by Steven
4987         Munroe <munroesj@us.ibm.com>.
4988
4989         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4990         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4991         necessary.
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         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4999         comparison fix.
5000
5001         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5002         The trampoline can be longer on PPC64.
5003
5004 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5005
5006         Contributed under the terms of the MIT/X11 license by Steven
5007         Munroe <munroesj@us.ibm.com>.
5008
5009         * mini-ppc.c: Compiler warning fixes and trivial code
5010         simplifications.
5011
5012 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5013
5014         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5015         ins->dreg which could be a hardware register, not a vreg.
5016
5017         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5018         
5019         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5020         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5021
5022         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5023         
5024         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5025         ->dreg, that is not the vreg we are looking for.
5026
5027         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5028
5029         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5030         LIVERANGE_END.
5031
5032         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5033         strange crashes.
5034
5035 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5038
5039         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5040         the line diff is 0.
5041
5042         * aot-compiler.c: Add xdebug support on x86.
5043
5044         * unwind.c: Add x86 support.
5045         
5046         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5047         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5048
5049         * mini.c (mini_method_compile): Ditto.
5050         
5051         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5052         the variable index.
5053
5054         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5055         which mimic .push_section/.pop_section in GAS.
5056         
5057         * aot-compiler.c: Emit precise live range information for variables.
5058
5059         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5060
5061         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5062         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5063         them.
5064
5065         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5066         the live ranges of variables.
5067
5068         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5069         of the variable in terms of native offsets.
5070
5071 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5072
5073         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5074         
5075 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5076
5077         Contributed under the terms of the MIT/X11 license by Steven
5078         Munroe <munroesj@us.ibm.com>.
5079
5080         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5081         order (offset then base reg) for ppc_load_multiple_regs.
5082         (emit_save_saved_regs) Correct operand order for
5083         ppc_store_multiple_regs.
5084         (mono_arch_get_call_filter): Correct operand order for
5085         ppc_load_multiple_regs.
5086
5087         * mini-ppc.c (emit_memcpy): Fix operand order for
5088         ppc_load_reg_update and ppc_store_reg_update.
5089         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5090         (mono_arch_emit_epilog): Correct operand order for
5091         ppc_load_multiple_regs.
5092
5093         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5094         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5095
5096 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5097
5098         * cpu-ppc64.md: Fixed storer4_memindex length.
5099
5100 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5103         line number info.
5104         
5105         * aot-compiler.c (emit_line_number_info): Optimize this.
5106
5107 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5108
5109         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5110         
5111         * aot-compiler.c: Add debug info for methods without debug info by
5112         emitting an IL file and having the line number info referencing that file.
5113
5114         * aot-compiler.c: Optimize the size of the generated line number info.
5115
5116         * aot-compiler.c: Emit line number info in xdebug mode.
5117
5118         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5119         million arguments.
5120
5121 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5124
5125         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5126         is used.
5127
5128 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * basic-calls.cs: Test for the weird crash found on arm.
5131         
5132 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5133
5134         * cpu-arm.md: Increase the size of storer8_membase_reg and
5135         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5136
5137         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5138         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5139         reg to LR otherwise we'll be loading/storing from just the offset.
5140
5141 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5142
5143         Question: if we are storing gint32's inside the "*native_offset",
5144         should we change the signature to "gint32 *native_offset" to
5145         ensure that we do not have type definition problems?
5146         
5147         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5148         an int * as this is what the other function expects, causes
5149         problems with Freescale's compiler that defined int32_t to be a
5150         long and makes int incompatible 
5151
5152 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5153
5154         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5155         filename conflict with bjam.
5156
5157 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5158
5159         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5160         as it might use decomposed ops.
5161
5162 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5163
5164         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5165
5166         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5167         is defined.
5168
5169         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5170
5171         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5172         offsets.
5173
5174         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5175         way registers are stored in MonoContext on arm.
5176
5177         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5178         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5179
5180         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5181
5182         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5183
5184         * mini.c (mini_init): Register mono_isfinite.
5185
5186         * jit-icalls.c (mono_isfinite): New jit icall.
5187
5188         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5189         
5190         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5191         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5192         the parent frame.
5193
5194 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5195
5196         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5197         separate frame and stack pointers, so we must use FP to find the register
5198         spill area.
5199         The FP reg is retrieved from the MonoContext::regs array.
5200
5201 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5202
5203         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5204         as FPA requires it.
5205
5206 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5209         return R4 and R8 when not running under softfloat.
5210
5211         Fixes basic-calls.exe
5212
5213 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5214
5215         * mini-arm.c: Implement some overflow opcodes.
5216
5217 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5218
5219         * ssa.c: handle another alloca.h
5220
5221         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5222         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5223         MONO_ARCH_USE_SIGACTION. 
5224
5225         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5226         capability defines.
5227
5228         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5229
5230         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5231         PPC targets as sigaction does not exist on all platforms, define
5232         this on a per-platform basis.
5233
5234         Instead of erroring out if the platform is not defined, include
5235         mini-ppc-os.h, and expect that the OS specific setting provides
5236         the required information.   
5237
5238 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5239
5240         * aot-compiler.c: Fix --enable-minimal=aot.
5241
5242 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5245         previous change.
5246
5247 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * exceptions-arm.c: Fix warnings.
5250
5251         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5252         ARM.
5253
5254         * mini-x86.c: Fix --enable-minimal=jit build.
5255
5256         * mini.c: Really fix --enable-minimal=jit build.
5257         
5258         * mini.c (construct_object_context_for_method): Move this outside
5259         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5260
5261         "Backported" of r124984 from 2.0 branch.
5262         
5263         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5264
5265         "Backport" of r124977 + r124978 from 2.0 branch.
5266         
5267         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5268         to avoid calling mono_exception_from_token () from the throw trampoline.
5269         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5270         for throwing corlib exceptions, this fixes full-aot support for corlib
5271         exceptions.
5272
5273         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5274
5275 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5276
5277         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5278         part of the changes to split the code in mini into operating
5279         system specific files.
5280
5281         This patch was done by copying mini.c to the respective files to
5282         preserve SVN history.
5283
5284 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5287
5288 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5291         remoting-invoke-with-check wrappers of shared methods.
5292
5293         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5294
5295 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5296
5297         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5298         optimization if the top of stack is the last instruction in the
5299         bblock.  Otherwise it might have been used after its definition.
5300         Fixes #469742.
5301
5302 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5305         method as well when get_vcall_slot () fails to match a code sequence.
5306
5307         * mini-arm.c: Fix the android build, which doesn't have
5308         __aeabi_read_tp.
5309
5310 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5313         the s390x build.
5314
5315 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5316
5317         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5318
5319 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5322         and put its id into jinfo->used_regs. This is only used on amd64,
5323         which is currently the only platform generating unwind info.
5324
5325         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5326         the dwarf unwinder. This is required to correctly handle async exceptions
5327         like thread abort and stack overflows, which can happen while a method
5328         is in the middle of its prolog or epilog.
5329         
5330         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5331         the unwind info belonging to an AOTed method.
5332
5333         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5334         into cfg->unwind_ops.
5335         
5336         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5337
5338         * mini.c (mini_init): Call mono_unwind_init ().
5339         (mini_cleanup): Call mono_unwind_cleanup ().
5340
5341         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5342         unwind info to be shared between methods.
5343
5344         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5345         saved in the LMF.
5346
5347         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5348         get_throw_pending_exception () to avoid initialization races.
5349
5350         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5351         mono_arch_exceptions_init () function.
5352
5353         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5354
5355 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * mini.c (mono_get_domain_intrinsic): New helper function.
5358         (mono_get_thread_intrinsic): Ditto.
5359
5360         * mini-arm.c mini-ia64.c: Use the new helper functions.
5361         
5362         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5363         the last constrained_call change, since it is needed in the non-AOT
5364         case as well.
5365
5366         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5367         
5368         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5369         mono_get_lmf_addr () on arm eabi linux.
5370
5371 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5372
5373         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5374         code sequence which matches a non-virtual call.
5375
5376 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5377
5378         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5379         stack pointer (r1).
5380
5381 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5384         runtime-invoke wrappers, since they are also shared based on signature.
5385
5386 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5387
5388         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5389         info from the (correct) context.
5390
5391 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5392
5393         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5394         
5395         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5396         using dwarf unwinding info. Not yet used.
5397
5398         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5399
5400 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5401
5402         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5403         descriptors.
5404
5405         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5406         special case and handle mono_arch_delegate_invoke_impl() returning
5407         function descriptors.
5408
5409         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5410         trampolines return function descriptors, too.
5411
5412 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5413
5414         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5415         out_of_line optimization.
5416
5417 2009-01-21  Martin Baulig  <martin@ximian.com>
5418
5419         * mini.h
5420         (MonoCompile): Added `disable_deadce_vars' to disable removing
5421         unused variables.
5422
5423         * mini.c
5424         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5425         inside the debugger.
5426
5427         * liveness.c (mono_analyze_liveness): Don't remove any unused
5428         variables if `cfg->disable_deadce_vars' is set.
5429
5430 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5431
5432         * method-to-ir.c: Only apply exception constructor optimization if
5433         the the method actually belongs to an exception class.  Fixes
5434         #467456.
5435
5436 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5439         change inside a #ifdef __mono_ppc64__.
5440
5441         * aot-compiler.c (compile_method): Remove the previous limitation.
5442
5443         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5444         on type variables in AOTed code.
5445         
5446         * aot-compiler.c (compile_method): Skip generic methods having type 
5447         constraints on their generic parameters.
5448
5449         * aot-compiler.c (compile_method): Check for methods which cannot be
5450         encoded inside RGCTX_FETCH patches as well.
5451
5452         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5453         build.
5454
5455 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5456
5457         * method-to-ir.c: Force the vtable variable in shared generic code
5458         for the case that they might show up on a stack trace where they
5459         are needed.
5460
5461         * mini-exceptions.c: Save and use generic sharing info as well as
5462         IP in stack traces to resolve shared generic instantiations.
5463
5464 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5467         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5468
5469 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5470
5471         * method-to-ir.c: Do generic sharing for array constructors.
5472
5473 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5474
5475         * mini-exceptions.c (mono_print_thread_dump): Add information
5476         about the thread state using wapi_current_thread_desc.
5477
5478 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5479
5480         * basic-simd.cs: Tests for the new constructors. 
5481
5482 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5483
5484         * mini-ops.h: Added OP_EXPAND_*
5485
5486         * cpu-x86.md: Same.
5487
5488         * mini-x86.c (mono_arch_output_basic_block): Same.
5489         
5490         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5491
5492 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * iltests.il.in: Add a test for #467385.
5495
5496 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5497
5498         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5499         thread been cleaned up is not the same currently in execution.
5500
5501         Fixes appdomain-unload crashes on windows, osx and linux variants
5502         without the __thread keyword.
5503
5504 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5505
5506         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5507         (koush@koushikdutta.com). Implement this for android.
5508
5509         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5510         begins with a digit.
5511
5512         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5513         mono_marshal_get_write_barrier ().
5514
5515 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5516
5517         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5518         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5519         that pass them on a register pair.
5520
5521         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5522         test was crashing due to that.
5523
5524 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5525
5526         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5527         trampoline code. Include ucontext.h only if available.
5528
5529 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5530
5531         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5532         and doesn't check whether it's sharable, like it was before
5533         removing the shared generics hash.  This brings IronPython
5534         performance back to what it was before that change.
5535
5536 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5537
5538         * method-to-ir.c: Handle delegate invocation optimization earlier,
5539         otherwise it would be handled (much more slowly) by the
5540         final/sealed optimization.
5541
5542 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5545         domain is not set. Fixes #465864.
5546
5547 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5548
5549         * method-to-ir.c: Don't stop sharing of generic methods with catch
5550         clauses - we already handle those.
5551
5552 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5553
5554         * mini.c, mini.h: lookup_generic_method() is now
5555         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5556         making the shared_generics_hash obsolete.
5557
5558 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5559
5560         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5561         use the red zone.  Make room on the stack first and then use it,
5562         not the other way around.
5563
5564 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * mini.c (mini_init): Call mono_xdebug_init ().
5567
5568         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5569
5570 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5571
5572         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5573
5574         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5575         trampolines.
5576
5577         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5578         debug+unwind info for trampolines.
5579
5580         * mini.c (mono_create_unwind_op): New helper function.
5581
5582         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5583
5584 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * aot-compiler.c: Fix the build.
5587
5588 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * Makefile.am: Update dtrace-prelink.sh location.
5591
5592 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5595         optimization. Fixes #464520.
5596
5597 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5598
5599         * mini-amd64.c : Adding code to save/restore non-volatile registers
5600            on Winx64.
5601
5602         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5603           registers on Winx64.
5604
5605         Contributed under MIT/X11 license.
5606
5607 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5608
5609         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5610         __GNUC_MINOR__ which can break when the major version changes.
5611
5612 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5613
5614         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5615
5616 2009-01-07  Geoff Norton  <gnorton@novell.com>
5617
5618         * helpers.c:  Allow mono -v -v -v to work on darwin.
5619
5620 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5621
5622         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5623           pattern. 
5624
5625         Contributed under MIT/X11 license.
5626
5627 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5630         instead of directly accessing type->data.klass. Fixes #462016.
5631         (mono_allocate_stack_slots_full): Ditto.
5632
5633         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5634         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5635
5636         * aot-compiler.c (emit_plt): Fix ARM build.
5637
5638 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5641         
5642         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5643         change.
5644
5645         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5646         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5647         #463357.
5648
5649         * iltests.il.in: Add a regression test.
5650
5651 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5652
5653         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5654
5655 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5656
5657         * basic-simd.cs: Add a regression test for #462457.
5658
5659 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5660
5661         * mini-ops.h: Add a definition of XPHI.
5662
5663         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5664
5665         * ssa.c (op_phi_to_move): Handle XPHI.
5666
5667         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5668
5669         Fixes #462457
5670
5671 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5672
5673         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5674
5675 2008-12-31  Geoff Norton  <gnorton@novell.com>
5676
5677         * mini-ppc.c: The prolog size allocated can be too small for darwin
5678         ppc32 under certain circumstances.  Also fix a small logic bug.
5679
5680 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5681
5682         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5683         while loading AOT methods.
5684
5685         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5686         since only the former is nulled out after a successful cast. This prevents
5687         crashes with rethrown exceptions when using --debug=casts.
5688
5689 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5690
5691         * mini.h: New macro for checking whether a method is final,
5692         i.e. whether the method or its class is marked final.
5693
5694         * method-to-ir.c: Use the new macro for all final-checks
5695         consistently.  Fixes the crash in the System.ServiceModel tests.
5696
5697 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5698
5699         * mini-exceptions.c (get_exception_catch_class): Corrected another
5700         overly strict assertion.
5701
5702 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5703
5704         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5705         Clobbering it is not allowed because the caller might use it as
5706         the vtable register in the interface call.
5707
5708 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5709
5710         * mini-exceptions.c (get_exception_catch_class): Corrected an
5711         overly strict assertion.
5712
5713 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5714         
5715         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5716
5717         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5718
5719         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5720
5721         * cpu-mips.md: correct lengths for certain long_ opcodes.
5722
5723         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5724
5725         * 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().
5726         
5727 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5728
5729         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5730         
5731 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5732         
5733         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5734         
5735 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5738         next basic block.
5739         
5740 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5741
5742         * 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
5743
5744         * 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)
5745         
5746 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5747         
5748         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5749         
5750 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5753         gshared code. Fixes #458947.
5754
5755         * generics.cs: Add a test.
5756
5757 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5758         
5759         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5760         
5761         * mini-mips.c: first pass n32 code generation.
5762
5763         * mini-mips.h: datatypes and defines for n32 support.
5764
5765         * exceptions-mips.c: first pass n32 code generation.
5766         
5767         * tramp-mips.c: first pass n32 code generation.
5768         
5769         * cpu-mips.md: add long_ opcodes.
5770         
5771 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5772
5773         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5774
5775         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5776         
5777         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5778         
5779         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5780
5781         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5782
5783         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5784
5785         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5786
5787         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5788
5789         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5790
5791 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5792
5793         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5794
5795 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5796
5797         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5798
5799 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5800
5801         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5802         descriptors for helper functions directly in front of the code.
5803
5804 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5805
5806         * method-to-ir.c: Removed an unnecessary assertion.
5807
5808 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * method-to-ir.c: Merge SGEN changes from the old JIT.
5811
5812 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * driver.c (compile_all_methods_thread_main): Handle failure of
5815         mono_get_method ().
5816
5817 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5818
5819         * mini-ppc.c: Merged with mini-ppc64.c.
5820
5821         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5822
5823         * Makefile.am: Use the same sources for PPC and PPC64.
5824
5825         * mini-ppc64.c: Removed.
5826
5827 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5828
5829         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5830         code to mono_bb_is_fall_through.
5831         
5832         * branch-opts.c (mono_remove_critical_edges): Same.
5833
5834 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5835
5836         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5837         expect that an OP_BR_REG will be there.
5838
5839 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5840
5841         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5842         for the many branch ops. The original check miss OP_BR_REG.
5843
5844         Fixes #457574.
5845         
5846 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5847
5848         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5849
5850 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5853         while holding the aot lock.
5854
5855 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5856
5857         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5858         
5859 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5860
5861         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5862           to release all runtime callable wrappers held by the runtime.
5863
5864         Contributed under MIT/X11 license.
5865
5866 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5867
5868         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5869           for Winx64.
5870
5871         Contributed under MIT/X11 license.
5872
5873 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5876         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5877
5878 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5879
5880         * cpu-mips.md: fix ckfinite length
5881
5882         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5883         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5884         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5885         
5886 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5887
5888         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5889         
5890 2008-12-08  Geoff Norton  <gnorton@novell.com>
5891
5892         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5893         size by 8 bytes as well.
5894
5895 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5896
5897         * basic-simd.cs: Fix method names for Vector16b.
5898         
5899 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5900
5901         * basic-simd.cs: Fix method names for Vector16sb.
5902
5903 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5904
5905         * basic-simd.cs: Fix method names for Vector8us.
5906         
5907 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5908
5909         * basic-simd.cs: Fix method names for Vector8s.
5910         
5911 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5912
5913         * basic-simd.cs: Fix method names for Vector4ui.
5914
5915 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5916
5917         * basic-simd.cs: Fix method names for Vector2l.
5918
5919 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5920
5921         * basic-simd.cs: Fix method names for Vector2d.
5922
5923 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5924
5925         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5926         that are extension methods.
5927
5928 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * basic-simd.cs: Fix method names for Vector4f.
5931
5932 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5935         as such. Fixes #456669.
5936
5937 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5938
5939         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5940         
5941 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5942
5943         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5944         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5945         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5946         (mips_adjust_stackframe): handle FP spills
5947                 
5948         * mini-ops.h: add mips_mtc1_s2
5949         
5950         * cpu-mips.md: add mips_mtc1_s2
5951         
5952 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * unwind.c: New file, move the unwind info encoding functions here from
5955         aot-compiler.c, so they could be used at runtime too.
5956
5957 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5958
5959         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5960         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5961         
5962 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5963
5964         * mini-mips.c: cleanup warnings
5965         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5966         (mips_adjust_stackframe): handle case of taking the address of stack locals
5967         
5968 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5969
5970         * aot-compiler.c: Implement a few functions missing from the asm writer.
5971         (emit_method_code): Only write symbols for methods when using the bin
5972         writer, since the assembler can't deal with the characters in our method
5973         names.
5974
5975         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5976
5977         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5978         call.
5979
5980         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5981         a bit to also restore %rax.
5982
5983 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5984
5985         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5986
5987 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5990         arguments.
5991
5992 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5993
5994         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5995
5996         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5997         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5998
5999         * exceptions-ppc64.c: Removed.
6000
6001         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6002
6003 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6004
6005         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6006         tramp-ppc64.c.
6007
6008         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6009
6010         * tramp-ppc64.c: Removed.
6011
6012 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6013
6014         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6015         the TYPESPEC table.
6016
6017 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6018
6019         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6020
6021         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6022         mini-ppc.h instead of mini-ppc64.h.
6023
6024         * mini-ppc64.h: Removed.
6025
6026 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6027
6028         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6029         
6030         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6031         
6032 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6033
6034         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6035         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6036         code easier.
6037
6038 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6039
6040         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6041
6042 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6043
6044         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6045
6046 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * basic-simd.cs: Tests for operator == and != on Vector4f.
6049
6050 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6051
6052         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6053
6054         * simd-intrinsics.c: Kill useless enum.
6055
6056 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6057
6058         * cpu-mips.md: add long_conv_to_ovf_i4_2
6059         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6060
6061 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6062
6063         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6064         
6065         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6066
6067 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6068
6069         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6070         
6071 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6072
6073         * basic-simd.cs: Add tests for new methods.
6074
6075 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6076
6077         * simd-intrinsics.c: Add support for operator == and !=
6078         on Vector4(u)i.
6079
6080         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6081
6082 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6083
6084         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6085
6086 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6087
6088         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6089
6090         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6091         MONO_PATCH_INFO_ICALL_ADDR.
6092
6093         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6094
6095         * aot-compiler.c: Resurrect full-aot support.
6096
6097 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6098
6099         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6100         
6101 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6102
6103         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6104         
6105 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6106
6107         * basic-simd.cs: Fix tests to work under ppc.
6108         Remove tests for methods that will be removed.
6109
6110 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6111
6112         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6113         generic type (via a typedef or typeref) correctly.
6114
6115 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6116
6117         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6118         diagnose an assertion failure.
6119
6120 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6121
6122         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6123         Fix trampoline size.
6124
6125         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6126         conversion opcodes are implemented natively instead via emulation.
6127
6128 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6129
6130         * cpu-mips.md: remove mips_xori
6131
6132         * mini-ops.h:  remove mips_xori
6133
6134         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6135
6136         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6137         
6138         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6139         
6140 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6141
6142         * cpu-mips.md: fix instruction lengths.
6143
6144         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6145
6146         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6147
6148         * mini-ops.h: fix slti / sltiu op profiles.
6149         
6150 2008-12-02  Martin Baulig  <martin@ximian.com>
6151
6152         * method-to-ir.c (mono_method_to_ir): Disable debugging
6153         information for the init locals block to make the debugger stop
6154         after all locals have been initalized.
6155
6156 2008-12-02  Martin Baulig  <martin@ximian.com>
6157
6158         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6159         running inside the debugger.
6160
6161 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6162
6163         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6164         is enabled.
6165
6166         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6167         alu->alu imm optimization which only shows if deadce is disabled.
6168
6169         * aot-compiler.c: Rename the function names for the binary and asm writers
6170         so they can coexist in the same process. Rework the xdebug code to use the
6171         asm writer. This avoids the need to call into the runtime to dump the
6172         debugging info. Add more debugging info for types.
6173
6174         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6175
6176         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6177         cpu description tables, they can't occur in cpu-<ARCH>.md.
6178
6179         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6180         the stack in CEE_LDFLDA. Fixes #450542.
6181
6182         * generics.cs: Add a new test.
6183
6184 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6185
6186         * mini-ops.h: updated MIPS opcodes
6187         * mini-mips.c: decompose long opts
6188         * mini-mips.h: decompose long opts
6189         
6190 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6191
6192         * cpu-mips.md: fix length on int_rem_un
6193         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6194         
6195 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6196
6197         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6198
6199         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6200
6201 2008-11-29  Martin Baulig  <martin@ximian.com>
6202
6203         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6204         mono_debug_using_mono_debugger() in addition to the
6205         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6206
6207 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6208
6209         * mini-ops.h: updated more MIPS opcodes
6210         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6211         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6212         
6213 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6214
6215         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6216
6217 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6218
6219         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6220         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6221         * mini-ops.h: correct selected mips opcode entries
6222         
6223 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6224
6225         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6226         make them work.
6227
6228 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6229
6230         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6231
6232 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6233
6234         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6235         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6236         * mini-mips.h: disable IMT
6237         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6238         
6239 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6240
6241         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6242
6243 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6244
6245         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6246
6247 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6250         consistency.
6251
6252 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6253
6254         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6255         for Set/GetVector aligned versions.
6256
6257 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * basic-simd.cs: Add tests for Get/SetVector.
6260
6261 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6262
6263         * mini.c: Removed g_slist_append_mempool().  Now in
6264         metadata/mempool.c.
6265
6266 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6269         size properly and make the bounds check optional.
6270
6271         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6272         for SetVector and IsAligned.
6273
6274 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6275
6276         * mini.c: Remove unused mono_normalize_opcodes () function.
6277
6278 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6279
6280         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6281         using the new atomic add ops now.
6282
6283         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6284         add.
6285
6286 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6287
6288         * mini-ppc64.c: Several fixes.
6289
6290 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6291
6292         * cpu-mips.md: added jump_table
6293         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6294
6295 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6296
6297         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6298
6299 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6300
6301         * mini-ops.h: corrected a handful of MIPS opcodes.
6302
6303 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6304
6305         * aot-compiler.c: MIPS to use ELF writer
6306
6307 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6308
6309         * mini-codegen.c: remove MIPS specific assert.
6310
6311 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6312
6313         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6314         fixes.  PPC64 now passes most of the runtime regressions.
6315
6316 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6317
6318         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6319         volatile intervals a bit.
6320
6321 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6322
6323         * basic-long.cs: New test case.
6324
6325 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * mini.c (mini_method_compile): Disable globalra for large methods for 
6328         now.
6329
6330         * regalloc2.c (order_moves): Add fp support.
6331
6332         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6333         source bblock ends with an OP_BR_REG.
6334
6335         * ratests.cs: Add a new test.
6336
6337 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6338
6339         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6340         sharing.  PPC64 now passes generics.exe.
6341
6342 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6343
6344         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6345
6346 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6347
6348         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6349         memory when mono_jit_info_table_find () can't find the method in the
6350         LMF case.
6351
6352         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6353         AOTed code too.
6354         
6355         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6356         writer too.
6357
6358 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6359
6360         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6361         Several fixes.  PPC64 now runs exceptions.exe and
6362         devirtualization.exe.
6363
6364 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6365
6366         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6367         arrays.exe and basic-math.exe.
6368
6369 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6370
6371         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6372         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6373
6374 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6375
6376         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6377
6378 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6379
6380         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6381
6382         * ir-emit.h: Move macros from method-to-ir.c to here.
6383
6384 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * mini-ops.h: Correct the long simd ops to use LREG.
6387
6388 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6391         
6392         * mini-ops.h: Correct the dreg type of a few long opcodes.
6393
6394         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6395         Add netbsd support.
6396
6397 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6398
6399         * mini-ppc.c: remove negative stack references in epilog
6400         for platforms that don't support the red zone.
6401
6402 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6403
6404         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6405         point regs.  Now PPC64 passes basic-calls.exe.
6406
6407 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         * basic-simd.cs: Add tests for accessors of Vector2l.
6410
6411 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6412
6413         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6414
6415         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6416         
6417         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6418
6419 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6420
6421         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6422         PPC64 passes basic-long.exe.
6423
6424 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6425
6426         * decompose.c: Decompose carry and overflow add on PPC64 like on
6427         other 64 bit archs.  Don't decompose sub at all on PPC64.
6428
6429         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6430         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6431         basic-long.exe.
6432
6433 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6434
6435         * basic-simd.cs: Add tests for accessors of Vector2d.
6436
6437 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6440
6441         * cpu-x86.md: Same.
6442
6443         * mini-x86.c (mono_arch_output_basic_block): Same.
6444         
6445         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6446
6447 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6448
6449         * basic-simd.cs: Add tests for accessors of Vector4f.
6450
6451 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6452
6453         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6454
6455         * cpu-x86.md: Same.
6456
6457         * mini-x86.c (mono_arch_output_basic_block): Same.
6458         
6459         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6460
6461 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6464
6465 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6468
6469         * cpu-x86.md: Same.
6470
6471         * mini-x86.c (mono_arch_output_basic_block): Same.
6472         
6473         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6474
6475 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6476
6477         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6478
6479 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         * simd-intrinsics.c: Enable setters for Vector16sb.
6482
6483 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6484
6485         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6486
6487         * cpu-x86.md: Same.
6488
6489         * mini-x86.c (mono_arch_output_basic_block): Same.
6490         
6491         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6492
6493 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         * simd-intrinsics.c: Implement setter for Vector8us.
6496
6497 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6498
6499         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6500         for dead variables.
6501
6502 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6503
6504         * mini-ppc.c: remove references to the red zone in the prolog
6505         (for systems that don't support it).
6506
6507 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6508
6509         * cpu-ppc64.md: Fixed a few instruction lengths.
6510
6511         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6512         now.
6513
6514 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6515
6516         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6517         basic.exe now.
6518
6519 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6520
6521         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6522
6523 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         * mini-ops.h: Added OP_INSERT_I2.
6526
6527         * cpu-x86.md: Same.
6528
6529         * mini-x86.c (mono_arch_output_basic_block): Same.
6530         
6531         * simd-intrinsics.c: Implement setter for Vector8s.
6532
6533         * simd-methods.h: Add the names of get setters of Vector8s.
6534
6535 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6538         
6539         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6540         parameters.
6541
6542         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6543
6544 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6545
6546         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6547         for PPC64.  An empty program runs now.
6548
6549 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6552
6553         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6554         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6555         info for JITted code is emitted into a shared library, loadable into gdb.
6556
6557 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6558
6559         * Makefile.am: Changes to build PPC64.
6560
6561         * mini-arch.h: Include mini-ppc64.h on PPC64.
6562
6563 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6564
6565         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6566         in PPC code up to r119147.
6567
6568 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6569
6570         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6571         cpu-ppc64.md: Changes for PPC64.
6572
6573         Based on code submitted by andreas.faerber@web.de at
6574         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6575         X11/MIT license.
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: Copied from the corresponding PPC files from
6581         r118846.
6582
6583 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6584
6585         * mini-ops.h: Added OP_ROUND.
6586
6587         * cpu-x86.md: Added round.
6588
6589         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6590
6591         * basic-math.cs: Added test_0_round to test rounding.
6592
6593         Contributed under MIT/X11 license.
6594
6595 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6596
6597         * aot-compiler.c : Fix the Winx64 build.
6598
6599         Contributed under MIT/X11 license.
6600
6601 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6604         in OP_EXTRACT_R8 to avoid possible stack corruption.
6605
6606 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6607
6608         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6609
6610         * cpu-x86.md: Added extract_r8.
6611
6612         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6613         
6614         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6615         a couple of OP_EXTRACT_I4.
6616
6617         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6618
6619         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6620
6621 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6622
6623         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6624         and not 4.1. 
6625
6626 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6627
6628         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6629         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6630
6631         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6632         are not needed any more.
6633
6634         * mini.h: Remove the unused INS_LIST macros.
6635
6636         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6637         longer needed.
6638
6639         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6640         ir-emit.h.
6641
6642         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6643         mono_alloc_ireg () instead.
6644
6645         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6646         macros.
6647
6648         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6649         on amd64.
6650
6651         * aot-runtime.c (load_aot_module): Disable AOT when running under
6652         CAS.
6653
6654         * mini-amd64.h: Change the monitor fastpath defines to check for
6655         !PLATFORM_WIN32 so they work on *bsd too.
6656
6657         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6658
6659         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6660
6661         * mini.h (MonoCompile): Remove new_ir flag.
6662
6663         * regalloc.h regalloc.c: Remove unused code.
6664
6665         * cpu-*.md: Remove more unused opcodes.
6666
6667         * simple-cee-ops.h simple-mini-ops.h: Removed.
6668
6669         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6670         
6671 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6672
6673         * aliasing.h: Removed.
6674
6675         * *.c: Remove references to aliasing.h and inssel.h.
6676
6677         * mini.c: Remove additional unused functions.
6678
6679         * mini-ops.h cpu-*.md: Remove unused opcodes.
6680
6681 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6682
6683         Remove the old JIT code.
6684
6685         * inssel*.brg: Removed.
6686
6687         * ssa.c abcremoval.c aliasing.c: Removed.
6688
6689         * ssa2.c: Renamed to ssa.c.
6690
6691         * abcremoval2.c: Renamed to abcremoval.c.
6692
6693         * *.c: Removed all !cfg->new_ir code.
6694
6695         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6696         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6697
6698         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6699         
6700 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6701
6702         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6703         to simplify the code and cut back on the number of global symbols in the AOT
6704         file.
6705         
6706         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6707
6708 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6709
6710         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6711         with the got/got_info tables.
6712
6713         * mini.h: Bump AOT file format version.
6714         
6715         * unwind.h: New file, contains definitions for stack unwinding.
6716
6717         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6718         to cfg->unwind_ops.
6719         
6720         * aot-compiler.c: Generalize the emitting of unwind information to use the
6721         information in cfg->unwind_ops.
6722
6723         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6724
6725         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6726         AOT method frames. Enable writing symbols for methods by default.
6727
6728 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6729
6730         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6731         and make it work with vectors of element sizes 1, 2 and 4.
6732
6733         * simd-intrinsics.c: Enable getter for all vectors with element size
6734         1, 2 or 4.
6735
6736         * simd-methods.h: Add the names of other getters.
6737
6738         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6739
6740         * cpu-x86.md: Same.
6741
6742         * mini-x86.c: Same.
6743
6744 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6745
6746         * mini-ppc.h: portability fix.
6747
6748 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6749
6750         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6751         buggy and will overwrite it.
6752
6753 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6756         Use it to emit local symbols for all methods so AOTed methods show up with
6757         their full name in gdb/valgrind output.
6758
6759 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6760
6761         * mini-ppc.c: portability fixes.
6762
6763 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6766         entries out of the if (!generic_shared...) code so it is always done.
6767         (mono_class_init_trampoline): Do the patching when running under valgrind
6768         too, newer versions of valgrind have no problems with it.
6769
6770 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6773         further sections.
6774
6775 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6776
6777         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6778         filters.
6779
6780 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6781
6782         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6783
6784 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6785
6786         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6787
6788         * cpu-x86.md: Same.
6789
6790         * mini-x86.c: Same.
6791
6792         * simd-intrinsics.c: Same.
6793
6794 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6797
6798 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6799
6800         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6801         to work with more Vector types.
6802
6803 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6806         store the elemens directly instead of using and intermediate.
6807
6808 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6809
6810         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6811
6812         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6813         to preserve %eax for aot plt trampolines.
6814
6815         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6816         (encode_method_ref): Flag synchronized methods so they won't go through
6817         the AOT trampoline.
6818
6819         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6820         wrappers.
6821
6822         * cpu-ia64.md (jmp): Increase max length.
6823
6824 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6827         open generic classes.
6828
6829         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6830
6831         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6832         box+brtrue optimization since it causes test failures on x86.
6833
6834 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6835
6836         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6837
6838         * cpu-x86.md: Same.
6839
6840         * mini-x86.c: Same.
6841
6842         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6843         for simd ctor values. 
6844
6845         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6846         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6847
6848 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6849
6850         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6851         LogicalRightShift.
6852
6853         * simd-instrincs.c: Same.
6854
6855         * basic-simd.cs: Same.
6856
6857 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * ratests.cs: Add more tests.
6860
6861         * regalloc2.c (add_spill_code): Handle more corner cases.
6862
6863 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6866         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6867         both the source an destination of an instruction.
6868
6869 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6870
6871         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6872         wapihandles.c: more portability changes.
6873
6874 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6875
6876         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6877         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6878         safe to execute in a signal handler and the kernel provides better
6879         the info in /proc/self/smaps. Avoid the assert on sigaction during
6880         cleanup.
6881
6882 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6885         do the bblock linking hack if it is actually needed.
6886
6887         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6888         up linking.
6889
6890         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6891         crash problem is fixed.
6892
6893         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6894         bblocks.
6895
6896         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6897         for catch clauses.
6898         (mini_method_compile): Set the starting value of next_vreg to 
6899         MAX_IREGS + MAX_FREGS when using globalra.
6900
6901         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6902         filter clauses with BB_EXCEPTION_HANDLER.
6903
6904         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6905
6906 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6907
6908         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6909         space for stdcall.  Fixes regressions on Win32.
6910
6911 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6914         bblocks.
6915         (linear_scan): Remove an assert which doesn't seem to be needed.
6916
6917         * local-propagation.c (mono_local_deadce): Avoid a call to
6918         MONO_DELETE_INS which would screw up the instruction linking.
6919
6920         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6921
6922         * regalloc2.c: Upgrade to work the current JIT code.
6923
6924 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6927         case.
6928
6929         * aot-runtime.c: Remove some dead code.
6930
6931         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6932         consistency.
6933         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6934
6935         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6936         trampolines using sscanf since atoi doesn't work on large unsigned values.
6937
6938         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6939         Initialize code_size.
6940
6941 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6942
6943         * method-to-ir.c (mini_emit_inst_for_method): Make
6944         Interlocked.CompareExchange work for Int arguments on 32 bit
6945         archs, as well.
6946
6947 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6948
6949         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6950
6951 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6952
6953         * main.c Fix MSVC build.
6954
6955         Contributed under MIT/X11 license.
6956
6957 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6958
6959         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6960         alignment larger than 8 bytes are aligned correctly, too.
6961
6962         * mini.c: Honor the min_align field of MonoClass when laying out
6963         the stack.
6964
6965 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6968
6969         * aot-compiler.c (emit_plt): Fix a warning.
6970         
6971         * aot-compiler.c: Implement ARM support in the binary writer.
6972
6973 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6974
6975         * basic-simd.cs: Add test for getter with byref arg.
6976         Fix the naming of a few tests.
6977         Add missing checks to a test.
6978
6979 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6982
6983         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6984         most of the full-aot support for monitor enter/exit trampolines.
6985
6986         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6987         enter/exit trampoline creation functions.
6988
6989         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6990         make dist.
6991
6992 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6993
6994         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6995         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6996         implement the needed functionality without adding crap to the runtime.
6997
6998 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6999
7000         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7001         non-x86 builds.
7002
7003         * mini.c (mono_build_date): New global version holding the build date in
7004         string format.
7005         
7006         * Makefile.am (buildver.c): Generate a file containing the build date.
7007
7008         * main.c: Set the build date from the generated file.
7009
7010         * mini.c (mono_get_runtime_build_info): New helper function returning build
7011         information in a string format.
7012         
7013         * driver.c (mono_main): Print the build date in --version.
7014
7015         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7016         file when the bind-to-runtime-version option is used.
7017
7018 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7019
7020         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7021
7022 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7023
7024         * simd-methods.h: Rename prefetch methods.
7025
7026         * simd-intrinsics.c: Same.      
7027
7028 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7029
7030         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7031         sizes.
7032
7033 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * aot-compiler.c: Use the bundled elf header files instead of depending on
7036         the system one.
7037         
7038         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7039         mempool.
7040
7041         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7042         on every call.
7043
7044 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7045
7046         * cpu-x86.md: Add store nta ops.
7047
7048         * mini-ops.h: Same.
7049
7050         * mini-x86.c: Same.
7051
7052         * mini.h: Add an enum for simd prefetch modes.
7053
7054         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7055         of store. Use the changed code to support store nta.
7056
7057         * simd-intrinsics.c: Add prefetch ops for all vector types.
7058
7059 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7062         threads.
7063         
7064         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7065         names.
7066
7067         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7068         trampolines.
7069
7070 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7071
7072         * mini-x86.c: Fixed commit.
7073
7074 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7075
7076         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7077
7078 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7079
7080         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7081         and MONITOR_EXIT, for the ASM fastpaths.
7082
7083         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7084         available.
7085
7086         * mini.c, patch-info.h: Signature and patch infos for
7087         Monitor.Enter/Exit trampolines.
7088
7089         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7090
7091         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7092         Monitor.Enter/Exit ASM fastpath for Linux.
7093
7094 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7097
7098         * objects.cs: Add a new test.
7099         
7100         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7101
7102         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7103         if MONO_LOG_LEVEL is set.
7104
7105         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7106
7107         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7108
7109         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7110         
7111         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7112         of file offsets. Align the sections belonging to the data segment to 
7113         PAGESIZE.
7114
7115 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7116
7117         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7118         elf.h. Port it to amd64.
7119
7120 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7121
7122         * driver.c: Enable SIMD by default.
7123
7124 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7125
7126         * cpu-x86.md: Add prefetch op.
7127
7128         * mini-ops.h: Same.
7129
7130         * mini-x86.c: Same.
7131
7132         * mini.h: Add an enum for simd prefetch modes.
7133
7134         * simd-methods.h: Add prefetch function names.
7135
7136         * simd-intrinsics.c: Add prefetch ops for all vector types.
7137
7138 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7139
7140         * aot-compiler.c (emit_bytes): Speed this up a little.
7141
7142 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * aot-compiler.c: Add JIT time etc. statistics.
7145         
7146         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7147
7148         * mini.h (MonoCompile): Add 'got_offset' field.
7149
7150         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7151         method_got_offsets array.
7152
7153         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7154         wrappers.
7155
7156         * aot-compiler.c (compile_method): Add generic method instances referenced
7157         by the method to the list of methods to be compiled, this is required so if
7158         A<T> references B<T>, and another assembly references A<int>, then it will
7159         also get a copy of B<int>.
7160
7161         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7162         when checking for monitor enter/exit.
7163
7164 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7165
7166         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7167         for Monitor.Enter and Monitor.Exit if enabled.
7168
7169         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7170         Solaris.
7171
7172 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7175         of an OP_MOVE. Fixes #440046.
7176
7177         * basic-long.cs: Add a new test.
7178
7179 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7180
7181         * mini.h: Add synchronization note for the managed counter-part.
7182
7183         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7184         returns the simd caps of the current cpu.
7185
7186 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7187
7188         * basic-simd.cs: Remove Console.WriteLine.
7189
7190 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7191
7192         * basic-simd.cs: New tests for Vector2ul.
7193
7194 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7195
7196         * simd-intrinsics.c: Add new vector type Vector2ul.
7197
7198 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7199
7200         * basic-simd.cs: New tests for Vector2l.
7201
7202 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7203
7204         * cpu-x86.md: Add long version of most packed int ops.
7205
7206         * mini-ops.h: Same.
7207
7208         * mini-x86.h: Same.
7209
7210         * simd-intrinsics.c: Add new vector type Vector2l.
7211
7212 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7213
7214         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7215
7216         * simd-methods.h: Remove SN_op_BitwiseXor.
7217
7218 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7221         alignment.
7222
7223 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7224
7225         * basic-simd.cs: Test for Vector2d.
7226
7227         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7228         value.
7229
7230 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7231
7232         * cpu-x86.md: Add double version of all packed float ops.
7233
7234         * mini-ops.h: Same.
7235
7236         * mini-x86.h: Same.
7237
7238         * simd-intrinsics.c: Add new vector type Vector2d.
7239
7240         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7241
7242         * simd-methods.h: Add Duplicate.
7243
7244 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * basic-simd.cs: Test for packing with signed saturation.
7247
7248 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7249
7250         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7251         found in the TYPESPEC table.
7252
7253 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7254
7255         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7256         too.
7257
7258         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7259
7260         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7261         instead of the RVA, since the RVA can be changed by tools like the cil 
7262         stripper.
7263
7264         * method-to-ir.c (mono_method_to_ir2): Ditto.
7265
7266         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7267         (deserialize_variable): Ditto.
7268
7269 2008-10-25  Martin Baulig  <martin@ximian.com>
7270
7271         * debug-mini.c (write_variable): Use
7272         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7273
7274 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7275
7276         * cpu-x86.md: Add unsigned variants of packd and packw.
7277
7278         * mini-ops.h: Same.
7279
7280         * mini-x86.h: Emit the right instruction for packd and packw.
7281         Add unsigned variants of packd and packw.
7282
7283         * simd-intrinsics.c: Packd and packw were used in place of their
7284         unsigned variants. Change that.
7285         Add intrinsics for (Signed)PackWithSignedSaturation.
7286
7287         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7288
7289 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7292
7293 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7294
7295         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7296
7297         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7298
7299         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7300         sse instructions.
7301
7302         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7303
7304 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7305
7306         * method-to-ir.c, mini.c: Special casing for the synchronized
7307         wrapper for the ldtoken+GetTypeFromHandle case.
7308
7309 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7312
7313         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7314         created/split bblocks.
7315
7316 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7317
7318         * mini-ops.h: Add packed signed mul high.
7319         
7320         * cpu-x86.md: Same.
7321
7322         * mini-x86.c (mono_arch_output_basic_block): Same.
7323
7324         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7325
7326         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7327
7328 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * basic-simd.cs: Tests for Vector16sb.
7331
7332 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7333
7334         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7335
7336 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7337
7338         * mini-ops.h: Add packed signed min, max and compare greater.
7339         
7340         * cpu-x86.md: Same.
7341
7342         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7343         saturation.
7344
7345         * simd-methods.h: Add CompareGreaterThan.
7346
7347         * simd-methods.h: Remove CompareEquals.
7348
7349         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7350
7351         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7352
7353         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7354         CompareEqual.
7355
7356 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7357
7358         * basic-simd.cs: Fix tests due to change in the API.
7359
7360 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7363
7364 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7365
7366         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7367
7368         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7369         inst_offset as this has invalid values for LDADDR.
7370
7371 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7372
7373         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7374
7375         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7376
7377 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7380         for accessing field->data.
7381
7382 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7383
7384         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7385
7386 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7387
7388         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7389
7390         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7391
7392 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7395         from the cfg mempool.
7396
7397 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7398
7399         * basic-simd.cs: Tests for new methods in Vector8us.
7400
7401 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7402
7403         * mini-ops.h: Add multiply and store high.
7404         
7405         * cpu-x86.md: Same.
7406
7407         * mini-x86.c (mono_arch_output_basic_block): Same.
7408
7409         * simd-methods.h: Same.
7410
7411         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7412         and CompareEqual.
7413
7414 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7415
7416         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7417         mono_class_setup_vtable ().
7418
7419         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7420         mono_class_get_vtable_entry () for accessing klass->vtable.
7421
7422         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7423
7424         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7425         found.
7426
7427         * method-to-ir.c (mono_save_token_info): Don't save references made from
7428         wrappers.
7429
7430         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7431         of generic instances.
7432
7433         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7434
7435 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7436
7437         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7438         OP_JMP depends on the method signature.  Calculate it properly.
7439
7440 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7441         
7442         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7443         called directly.
7444
7445         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7446         instances.
7447         (emit_extra_methods): Add another table mapping method indexes to 
7448         offsets in the extra_method_info table.
7449
7450         * mini.h: Bump AOT file format version.
7451         
7452         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7453         and mono_aot_get_method_from_token () into one function.
7454
7455 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7456
7457         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7458         separate counter.
7459
7460 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7461
7462         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7463         methods.
7464
7465         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7466         disable_aot.
7467
7468         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7469
7470         * mini.h: Bump aot file format version.
7471
7472         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7473         AOT file can contain native code for methods which are not in the METHOD
7474         table. Generate code for non-sharable generic instances of generic methods
7475         found in the METHODSPEC table.
7476         
7477         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7478         encoding generic type handles.
7479
7480         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7481         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7482
7483         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7484         macros + MONO_ADD_INS.
7485
7486         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7487         context as well.
7488
7489         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7490
7491         * mini.h: Bump aot file format version.
7492
7493         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7494
7495 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7496
7497         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7498         platforms, with definable stack alignment value.  Set to 16 now
7499         for all platforms.
7500
7501         * mini.c, mini.h, driver.c: Command line option for disabling
7502         stack alignment.
7503
7504 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * basic-simd.cs: Tests for new methods in Vector4ui.
7507
7508 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7509
7510         * mini-ops.h: Add packed int shuffle.
7511         
7512         * cpu-x86.md: Same.
7513
7514         * mini-x86.c (mono_arch_output_basic_block): Same.
7515
7516         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7517         extract mask, max, min, shuffle.
7518
7519         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7520
7521 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7522
7523         * basic-simd.cs: Tests for new methods in Vector8us.
7524
7525 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7526
7527         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7528         RuntimeTypeHandle, not a TypedReference.
7529
7530 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7531
7532         * simd-intrinsics.c: remove relocations.
7533
7534 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7535
7536         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7537         optimizations from the x86 backend.
7538
7539 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7540
7541         * simd-methods.h, simd-intrinsics.c: debloat method names and
7542         prepare for no relocations.
7543
7544 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7545
7546         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7547         
7548         * cpu-x86.md: Same.
7549
7550         * mini-x86.c (mono_arch_output_basic_block): Same.
7551
7552         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7553         extract mask, max, min and sum of absolute differences.
7554
7555         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7556         method name.
7557
7558 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7559
7560         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7561         Renamed one test for consistency.
7562
7563 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7566         fix to the code that deal with other blocks.
7567
7568 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7569
7570         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7571
7572 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7575         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7576         able to process the source reg.
7577
7578 2008-10-16  Martin Baulig  <martin@ximian.com>
7579
7580         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7581
7582         * inssel.brg: Add `OP_HARD_NOP'.
7583
7584         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7585
7586         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7587         `OP_HARD_NOP' instruction when running inside the debugger.
7588
7589         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7590         `OP_HARD_NOP' instruction when running inside the debugger.
7591
7592 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7593
7594         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7595         now works. The issue with the regalloc tripping up no longer
7596         happens.
7597
7598         * simd-intrinsics.c (load_simd_vreg): Same.
7599
7600 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7601         
7602         * basic-simd.cs: Tests for new Vector8ui methods.
7603
7604 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7605
7606         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7607         only for type. This fixes crashes where MonoInst::klass is checked
7608         for ops of type != VTYPE or OBJ.
7609
7610         * simd-intrinsics.c (load_simd_vreg): Same.
7611
7612 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7613
7614         * mini-ops.h: Add ops for packed shuffle/max/avg and
7615         extract mask.
7616         
7617         * cpu-x86.md: Same.
7618
7619         * mini-x86.c (mono_arch_output_basic_block): Same.
7620
7621         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7622         extract mask.
7623
7624         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7625         to emit extract mask op.
7626
7627         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7628         to emit word shuffles.
7629
7630 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7631
7632         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7633         the largest alignment needed by a variable, but at least
7634         sizeof(gpointer).
7635
7636 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * basic-simd.cs: Tests for the fixes in the last commit.
7639
7640 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7643         no longer handles STACK_PTR input.
7644
7645         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7646
7647         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7648         get_simd_vreg   but handles STACK_PTR input.
7649
7650         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7651         as the input can be an arbitrary pointer.
7652
7653         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7654         LDADDR local optimization directly otherwise use a store op.
7655
7656 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * basic-simd.cs: Tests for dup low and dup high.
7659
7660 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * mini-ops.h: Add dup low and dup high ops.
7663         
7664         * cpu-x86.md: Same.
7665
7666         * mini-x86.c (mono_arch_output_basic_block): Same.
7667
7668         * simd-intrinsics.c (vector4f_intrinsics): Same.
7669
7670 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7671
7672         * basic-simd.cs: Tests for recently added functionality.
7673
7674 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7675
7676         * mini-ops.h: Add remaining sse1 fp ops.
7677         
7678         * cpu-x86.md: Add remaining sse1 fp ops.
7679
7680         * mini-x86.c (mono_arch_output_basic_block): Same.
7681
7682         * mini.h: Add enum for simd FP compare conditions.
7683
7684         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7685
7686         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7687         so the backed can generate the appropriate op.
7688
7689 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7690         This patch squeese one more byte from the SimdIntrinsc struct.
7691
7692         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7693         a a shift amount intead of simply or'ing it.
7694
7695         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7696
7697         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7698         byte so we can have an aditional flags field without increasing struct size.
7699
7700         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7701         against the simd_supported_versions bitmask.
7702
7703         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7704
7705 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7706
7707         * mini.c: remove rawbuffer code (the only use here is unsafe because
7708         it takes locks during signal handling and the kernel now provides much
7709         better info in proc/pid/smaps these days).
7710
7711 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7712
7713         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7714         OP_X86_PUSH_OBJ. Fixes #434620.
7715
7716         * objects.cs: Add a test.
7717         
7718 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7721         that the packuswb/packusdw don't work with unsigned numbers for what
7722         would be negative numbers in signed format.
7723
7724         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7725         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7726
7727         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7728
7729         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7730
7731         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7732
7733         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7734
7735         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7736         add more ops.
7737
7738         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7739         version as the enum in mini.h.
7740
7741         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7742         for sse3 ops, check the simd_version field if present. This way the code
7743         works with all versions of sse.
7744
7745 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7746
7747         * simd-intrinsics.c: Fixed intrinsic name typo.
7748
7749         * mini.h: Added missing simd exported function.
7750
7751         * basic-simd.cs: Added tests for Vector4ui.
7752         Fixed broken test for Vector16b.
7753
7754 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7755
7756         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7757         the max length to 64.
7758
7759 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7760
7761         * method-to-ir.c: Only do the fast virtual generic method call for
7762         non-wrapper methods.
7763
7764         * mini.h, mini-trampolines.c: The new generic virtual remoting
7765         trampoline handles virtual method calls via the vtable (as done by
7766         the fast virtual generic method calls) to remoting proxies.
7767
7768         * mini.c (mono_jit_create_remoting_trampoline): For generic
7769         methods reate a generic virtual remoting trampoline.
7770
7771         * mini-amd64.h: Enable fast virtual generic method calls again.
7772
7773 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7774
7775         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7776         restore registers when doing tail calls.
7777
7778 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7781         Vector4ui.
7782
7783 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7786
7787 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7790
7791 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * basic-simd.cs: Retrofit for API changes.
7794
7795 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7796
7797         * mini-ppc.c: Handle integer stack arguments for tail calls.
7798
7799 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * optflags-def.h: Removed sse3 optimization.
7802
7803         * driver.c: Same.
7804
7805         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7806         sse3.
7807
7808         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7809
7810         * mini.h: Added enumeration with simd versions.
7811
7812         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7813         for detecting SSE3.
7814
7815         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7816
7817         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7818
7819 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7820
7821         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7822
7823         * basic-simd.cs: Fixed test naming.
7824
7825 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7826
7827         * mini-ops.h: Added ops for packed and saturated math, shifts
7828         and packing/unpacking.
7829
7830         * cpu-x86.md: Added descriptors for the above ops.
7831
7832         * mini-x86.c: Added code to emmit the above ops.
7833
7834         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7835
7836 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * aot-compiler.c (compile_method): Enable AOT for generic code.
7839
7840         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7841
7842 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7843
7844         * mini.c: add a workaround for a common screwup that ends up blamed
7845         to mono (other processes blocking signal delivery).
7846
7847 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7850         in the LDFLD/STFLD opcodes. Fixes #432673.
7851
7852         * iltests.il.in: Add a new test.
7853
7854 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7855
7856         * mini-arm.c: attach the thread in unmanaged->managed transitions
7857         using delegates (bug #433148).
7858
7859 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7860
7861        * basic-simd.cs: Use new ShuffleSel constants.
7862
7863 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7864
7865         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7866
7867         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7868         only disable simd intrinsics if no sse2 is detected.
7869
7870         * optflags-def.h: Added sse3.
7871
7872         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7873         is disabled.
7874
7875 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7878         when adding delegate-invoke wrappers.
7879
7880 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7881
7882         * Makefile.am: Reenable the simd tests.
7883
7884 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7885
7886         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7887           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7888           other vreg is allocated to that hreg.
7889
7890         Contributed under MIT/X11 license.
7891
7892 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7895         yet checked in.
7896
7897 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7898
7899         * basic-simd.cs: New test suite for SIMD intrinsics.
7900
7901         * Makefile.am: Added new tests.
7902
7903 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7904
7905         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7906
7907         * mini-ops.h: Same.
7908
7909         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7910
7911         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7912         using SSE2 aware opcodes.
7913
7914         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7915         is enabled, this code path is only reachable if conversion ops are emmited after
7916         mono_method_to_ir.
7917
7918         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7919
7920         This optimization saves 6 bytes per conversion against the old version.
7921
7922 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * aot-compiler.c (compile_method): Don't skip methods referencing 
7925         generic methods without a corresponding entry in token_info_hash, since
7926         encode_method_ref () can handle all generic methods now.
7927
7928         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7929         generic context is set.
7930         
7931         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7932         generic sharing of LDTOKEN.
7933
7934 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7935
7936         * mini-amd64.h: Temporarily disabled fast virtual generic method
7937         calls because it breaks the System.Runtime.Remoting tests.
7938
7939 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7942
7943         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7944         so inlining actually works.
7945         (check_inline_caller_method_name_limit): Ditto.
7946
7947 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7948
7949         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7950         64 bit safety (from Olaf Hering and Andreas Farber).
7951
7952 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7953         
7954         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7955         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7956         unused virtual call support code.
7957
7958         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7959         
7960         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7961         which can't use aot trampolines.
7962         (decode_patch): Don't create aot trampolines for methods which can't use
7963         them.
7964
7965         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7966         use aot trampolines.
7967
7968         * mini.h: Bump AOT image format version.
7969         
7970 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7973         to save_token_info () since cmethod is inflated for constrained calls.
7974
7975         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7976
7977 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7978
7979         * Makefile.am: Add build rules for ppc64.
7980         This avoids the build failing at pedump with unresolved symbols
7981         due to lack of arch_sources. Instead it will now fail earlier
7982         due to lack of cpu-ppc64.md.
7983
7984         Contributed under MIT/X11 license.
7985
7986 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7987
7988         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7989         tail calls.
7990
7991         * iltests.il.in: Add test case for tail call with many arguments.
7992
7993 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7994
7995         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7996         to the fast virtual generic method code until the aot case is fixed.
7997
7998 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7999
8000         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8001
8002 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8003
8004         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8005         thunks.
8006
8007 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8008         
8009         * simd-intrinsics.c: Forgot to add this one.
8010
8011         * mini-codegen.c: Fix macro in case SIMD is not supported.
8012
8013 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8014         
8015         This patch land initial JIT support for simd intrinsics.
8016
8017         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8018
8019         * Makefile.am: Added simd-intrinsics.c
8020
8021         * simd-intrinsics.c: New file with simd instrinsic related
8022         code.
8023
8024         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8025
8026         * cpu-x86.md: Add simd related instructions.
8027
8028         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8029
8030         * driver.c: Added two new --regression variants.
8031
8032         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8033
8034         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8035
8036         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8037         extract some complicated logic to helper functions.
8038
8039         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8040
8041         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8042
8043         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8044         the specialized simplification pass.
8045
8046         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8047
8048         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8049
8050         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8051         table.
8052
8053         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8054         if MONO_ARCH_NEED_SIMD_BANK is defined.
8055
8056         * mini-ops.h: Added the new simd ops.
8057
8058         * mini-x86.c: Added mono_arch_xregname.
8059
8060         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8061
8062         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8063
8064         * mini-x86.h: Define simd related MONO_ARCH macros.
8065
8066         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8067
8068         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8069
8070         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8071         MONO_CLASS_IS_SIMD to deal with simd related IR.
8072
8073         * mini.h (MonoInst): Added spill_var to the backend union.
8074
8075         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8076
8077         * mini.h: Added forward declarations of the new simd fuctions.
8078
8079         * optflags-def.h: Added new optimization names SIMD.
8080
8081         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8082
8083         * regalloc.h: Added support for working with 3 register banks.
8084
8085         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8086
8087         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8088
8089 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8090
8091         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8092
8093 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8094
8095         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8096         instead of one on 64 bit systems.
8097
8098         * method-to-ir.c: Remove unused includes.
8099
8100 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8101
8102         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8103         cfg->used_int_regs, since the two are different on arm.
8104
8105 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8106
8107         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8108         mono_method_get_vtable_index() to get the vtable index.
8109
8110 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8111
8112         * method-to-ir.c (mono_method_to_ir2): Don't create native
8113         wrappers for array methods, because they're never called (and if
8114         they were called they wouldn't work).
8115
8116 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8117
8118         * method-to-ir.c (mono_method_to_ir2): Array methods are
8119         special-cased and must not be invoked indirectly via the (M)RGCTX
8120         when generic sharing is turned on.  Fixes #431413.
8121
8122 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8123
8124         * method-to-ir.c: When generic sharing is active, call
8125         non-interface virtual generic methods via the standard trampoline.
8126
8127         * mini-trampolines.c: Handle virtual generic shared methods.
8128
8129         * mini.h, mini-x86.c, mini-x86.h: New argument for
8130         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8131         method thunks and which is the trampoline to call if the lookup
8132         fails.  Enable the virtual generic method thunk for x86.
8133
8134         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8135         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8136         argument but assert that it's NULL, because these archs don't yet
8137         implement the virtual generic method thunk.  Changes in the IMT
8138         thunk data structures.
8139
8140 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8141
8142         * aot-compiler.c (emit_globals): Avoid invalid characters in
8143         the static linking symbol.
8144
8145         * objects.cs: Add a test for the range check optimization. Fix warnings.
8146
8147         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8148         optimization from the current JIT.
8149
8150         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8151         later in decompose_array_access_opts () to allow more optimizations.
8152
8153         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8154         mono_decompose_soft_float () for consistency.
8155
8156         * mini-ops.h: Fix arguments of OP_STRLEN.
8157
8158         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8159         into a separate function.
8160         (reset_cast_details): Ditto.
8161         (handle_unbox): Save cast details. Fixes #431254.
8162
8163         * method-to-ir.c: Remove some obsolete FIXMEs.
8164
8165 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8168
8169 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         * mini-codegen.c: More work on macros to make them
8172         ready for multiple regbanks.
8173
8174 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8175
8176         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8177
8178         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8179
8180 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8181
8182         * mini-codegen.c (mono_spillvar_offset): Proper support for
8183         multiple regbanks.
8184
8185 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8186
8187         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8188         the stack overflow changes.
8189
8190 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8191
8192         * mini-codegen.c: Make all bank macros depend on reg_bank.
8193
8194         * mini-codegen.c (mono_local_regalloc): Make free mask
8195         initialization regbank aware.
8196
8197 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8198
8199         * mini-codegen.c (mono_local_regalloc): Extract callee
8200         mask selection to a function and make it regbank aware.
8201
8202 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8205         code to deal with many regbanks.
8206
8207 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * mini-codegen.c: More fp->regbank changes.
8210
8211 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8212
8213         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8214         of a hardcoded constant.
8215
8216 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         * method-to-ir.c (type_from_stack_type): Fix typo.
8219
8220 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * mini-ia64.c (emit_move_return_value): Convert float return values to
8223         double.
8224
8225         * objects.cs: Add a new test.
8226         
8227         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8228         VARARG methods to fix an assert later.
8229
8230         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8231         end so it at least compiles.
8232
8233 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8234
8235         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8236
8237 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8238
8239         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8240         optimization to a new function (emit_optimized_ldloca_ir) and enable
8241         it for both ldloca and ldloca_s.
8242
8243 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8244
8245         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8246         gshared CASTCLASS code.
8247
8248         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8249         amd64, where the libc stack unwinder encounters stack frames referring to
8250         native code in unmapped memory.
8251
8252         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8253         sharing.
8254
8255         * generics.cs: Add new test.
8256
8257 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8258
8259         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8260         add a check that one of the ARM_FPU_ constants is defined.
8261
8262         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8263         
8264         * mini-exceptions.c: Fix build on non-altstack platforms.
8265
8266         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8267         sharing of vtypes.
8268
8269         * ir-emit.h: Add a comment to NEW_PCONST.
8270
8271         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8272
8273         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8274
8275         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8276         after the changes to MonoJitDomainInfo.
8277
8278 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8279
8280         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8281
8282 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8283
8284         * mini-ppc.c: Compiler warning fixes.
8285
8286 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8287
8288         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8289         for pinvokes.
8290
8291 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8292
8293         * exceptions-ppc.c, mini-ppc.h: Compile
8294         mono_arch_handle_altstack_exception() on Darwin, too.
8295
8296 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8297
8298         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8299         work on archs which don't have generic sharing implemented, only
8300         without the vtable_arg.
8301
8302 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8303
8304         * mini.c: Added comment explaining why delegate ctor icall
8305         wrappers are compiled.
8306
8307 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8308
8309         * mini.c: Don't produce trampolines to delegate ctor icall
8310         wrappers but compile them upfront.
8311
8312 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8313
8314         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8315         runtime-set function when going back to managed code. Currently this
8316         is used to set back the protection on the soft ovf pages and/or to
8317         throw the stack overflow exception that happened in unmanaged code.
8318
8319 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8320
8321         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8322         runtime-set function when going back to managed code. Currently this
8323         is used to set back the protection on the soft ovf pages and/or to
8324         throw the stack overflow exception that happened in unmanaged code.
8325
8326 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8327
8328         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8329         the support code for restoring stack protection after stack overflows
8330         that happen in unmanaged code. Don't set the exec permission on the
8331         soft overflow area.
8332
8333 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8334
8335         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8336         delegate->method_ptr is set. Fixes #428054.
8337
8338 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * tests.cs: Rename to ratests.cs.
8341
8342         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8343         emit_get_rgctx_... functions.
8344
8345 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8346
8347         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8348
8349 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8350
8351         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8352         before asserting that method is sharable.
8353
8354 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8355
8356         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8357         whether method needs a static RGCTX wrapper used instead of
8358         complex conditions.
8359
8360         * generic-sharing.c, mini.h: A few functions moved to
8361         metadata/generic-sharing.c.
8362
8363 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8364
8365         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8366         Generic code sharing for value types, which essentially means
8367         treating value type methods like static methods.  The RGCTX is
8368         passed in the same way.
8369
8370 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8373         opcode when creating multi-dimensional arrays of open types.
8374
8375         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8376         open generic types.
8377
8378         * generics.cs: Add a test.
8379
8380         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8381
8382 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8383
8384         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8385
8386         * mini.c (mini_method_compile): Set it when running under the debugger. 
8387
8388         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8389         vreg optimization if the flag is set.
8390
8391         * driver.c (mono_main): Add --attach= option to pass options to
8392         the attach agent.
8393
8394         * mini.c (sigquit_signal_handler): Start the attach agent.
8395
8396         * ssapre.c: Disable this to save space since it is not yet ported to
8397         linear IR.
8398
8399         * regalloc2.c: Disable this to save space.
8400
8401         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8402
8403 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8404
8405         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8406         the -v option useful again.
8407
8408 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8411         --break-at-bb.
8412
8413         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8414         arrays of arrays. Fixes #428406.
8415
8416         * method-to-ir.c (mini_emit_castclass): Ditto.
8417
8418         * objects.cs: Add new test.
8419         
8420 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8421
8422         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8423         was wrong at it choked against target_type_is_incompatible for byref types.
8424
8425 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8426
8427         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8428         places.
8429
8430 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8431
8432         * mini-exceptions.c: update a few more exceptions-related counters.
8433
8434 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8435
8436         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8437         new functions to allocate from persistent mempools.
8438
8439 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8440
8441         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8442         multiple register banks in the future.
8443
8444         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8445
8446 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8447
8448         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8449
8450         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8451
8452         * mini.h: Export type_to_eval_stack_type.
8453
8454         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8455         is only ins->klass of byref types.
8456
8457 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8458
8459         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8460         (mini_emit_memcpy2): Ditto.
8461
8462         * mini-amd64.c: Fix a warning.
8463
8464 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8465
8466         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8467         linking.
8468
8469 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8470
8471         * method-to-ir.c: Extract stloc micro-optimization to a
8472         function and apply it to all cases.
8473
8474 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8475
8476         * method-to-ir.c: Don't fail generic code sharing in cases we
8477         already support.
8478
8479 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8480
8481         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8482
8483 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8484
8485         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8486         implementation.
8487
8488 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8489
8490         * trace.c: make tracing more useful and correct, with per-thread
8491         id and indent info.
8492
8493 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8494
8495         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8496         doing a method call and the argument is an R4.
8497
8498 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8499
8500         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8501         generic methods.
8502
8503 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8504
8505         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8506
8507 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8510         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8511
8512 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * driver.c: Add a --agent argument (not supported yet) to load managed
8515         agent assemblies before loading the main assembly, similarly to how the
8516         Java VM handles agents.
8517
8518 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8519
8520         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8521         function to do stack layout of local variables.
8522
8523 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8524
8525         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8526         calculation.
8527
8528 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8529
8530         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8531         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8532         JIT if DISABLE_JIT is defined.
8533
8534         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8535         defined.
8536
8537 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8538
8539         * iltests.il.in: Disable the fconv test on PPC (the result is
8540         undefined according to ECMA).
8541
8542 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8543
8544         * iltests.il.in: Enable tail call tests for PPC.
8545
8546         * mini.h: Add variable for storing incoming valuetype argument
8547         addresses for tail calls.
8548
8549         * mini-ppc.c: Implement valuetype arguments and return values for
8550         tailcalls on Linux.
8551
8552 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8553
8554         * mini-ppc.c: Partially implement tail calls (struct arguments and
8555         return values not supported).
8556
8557         * method-to-ir.c: Enable tail calls on PPC.
8558
8559 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8560
8561         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8562         runtime-invoke wrappers to work around the problem of them getting
8563         assigned to a random class.
8564
8565         * aot-runtime.c (mono_aot_get_method): Ditto.
8566         
8567 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8570         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8571
8572 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8573
8574         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8575         until they're implemented properly.
8576
8577         * exceptions-ppc.c: Use arch-independent exception-handling code
8578         instead of custom one.
8579
8580         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8581         for Linear IR.
8582
8583         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8584
8585         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8586         applies when __powerpc__ is defined.
8587
8588 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8589
8590         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8591         methods to their code to avoid computing the full name of wrappers and
8592         doing a lookup in a string hash table.
8593
8594 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8595
8596         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8597         we identify bblocks before method_to_ir () is ran.
8598
8599         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8600         Also avoid optimizing branches pointing to themselves.
8601
8602         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8603
8604 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8605
8606         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8607
8608 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8611         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8612         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8613         'buf'.
8614
8615         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8616         jumped to the same entry in plt_jump_table.
8617
8618 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8619
8620         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8621         dynamic images.
8622
8623 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8626         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8627         #421807.
8628
8629 2008-08-29  Geoff Norton  <gnorton@novell.com>
8630
8631         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8632         segment, and doesn't properly handle .space as .text.  Fixes
8633         AOT Mach/ARM
8634
8635 2008-08-29  Geoff Norton  <gnorton@novell.com>
8636
8637         * mini.c: Disable the mach exception handler when running on 
8638         ARM
8639
8640 2008-08-29  Geoff Norton  <gnorton@novell.com>
8641
8642         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8643         globals on Darwin/ARM
8644
8645 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8646
8647         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8648         since too many things depend on it. Instead, call 
8649         mono_runtime_set_no_exec ().
8650         
8651         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8652         the new JIT.
8653
8654         * aot-compiler.c: Add an 'asm-only' AOT option.
8655
8656         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8657                 
8658         * aot-compiler.c (compile_method): Disable gshared support for now as it
8659         doesn't yet work.
8660
8661 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8662
8663         * mini-amd64.h : Fix a compiler warning.
8664
8665         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8666           Changed to use a callback function to retrieve the unwind info.
8667           This avoids problems observed when code blocks were removed by
8668           unloading an app domain.
8669
8670         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8671           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8672           to work properly.
8673
8674         Contributed under MIT/X11 license.
8675
8676 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8677
8678         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8679           case to keep the stack aligned to 8.
8680
8681         Contributed under MIT/X11 license.
8682
8683 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8686         avoid repeated linear searches.
8687
8688 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8691         methods it can't handle.
8692         
8693         * aot-compiler.c (add_method): Avoid adding a method twice.
8694         (add_wrappers): Add runtime invoke wrappers for all methods.
8695
8696         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8697         function to create an aot-compatible version of this trampoline.
8698
8699         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8700
8701 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8702
8703         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8704
8705         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8706         with a generic sharing failure.
8707
8708         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8709
8710         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8711         CEE_RETHROW. Fixes #419634.
8712
8713         * mini.c (mono_method_to_ir): Ditto.
8714
8715         * exceptions.cs: Add a new test.
8716         
8717         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8718         to mono_type_stack_size_internal () since some callers might not pass in
8719         an rgctx.
8720
8721         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8722         instrument_prolog. Fixes #419878.
8723
8724         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8725         doubles in soft float mode volatile.
8726
8727 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8730
8731         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8732         to handle soft float correctly.
8733
8734         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8735         the fast path.
8736
8737         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8738
8739         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8740         to sp, since the generics catch code requires it.
8741
8742         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8743         copying.
8744
8745         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8746         mono_arch_emit_imt_argument ().
8747
8748         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8749
8750         * mini-arm.c tramp-arm.c: Generic sharing updates.
8751
8752 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8753
8754         * mini-arm.c: Fix the arm build.
8755
8756         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8757         handling enums, generic instances and generic sharing.
8758         (mini_type_stack_size_full): Ditto.
8759
8760         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8761         
8762         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8763
8764         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8765
8766         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8767         trampolines.
8768
8769         * mini-arm.c: Various small generic sharing changes.
8770
8771         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8772         this for x86.
8773         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8774         custom code.
8775
8776         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8777         helper function to return a generic class init trampoline.
8778
8779         * method-to-ir.c mini.c: Use it.
8780         
8781         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8782         arch-specfic function to return a generic class init trampoline.
8783
8784         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8785         the GENERIC_CLASS_INIT custom code.
8786
8787         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8788         a fatal error, not a sharing failure.
8789
8790         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8791         needed.
8792
8793         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8794         trampoline argument from MONO_ARCH_VTABLE_REG.
8795
8796         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8797         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8798         argument, and pass the vtable in VTABLE_REG.
8799
8800         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8801         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8802         argument, and pass the vtable in VTABLE_REG.
8803         (mono_arch_create_trampoline_code_full): Remove some special casing for
8804         the rgctx fetch trampoline.
8805
8806         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8807         Fixes #419273.
8808
8809         * iltests.il: Add a test for it.
8810
8811 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8814
8815         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8816         no longer needed.
8817
8818         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8819         use mono_jit_info_table_find () to avoid recursion.
8820         (mono_delegate_trampoline): Add a sync wrapper here.
8821
8822         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8823         here.
8824
8825         * mini.c (mono_method_to_ir): Ditto.
8826         
8827         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8828         add_sync_wrapper argument. Don't add a sync wrapper here.
8829         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8830
8831         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8832         
8833 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8834
8835         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8836           of nonvolatile registers back from MonoContext to CONTEXT.
8837
8838         Contributed under MIT/X11 license.
8839
8840 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8841
8842         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8843           arguments on Winx64 there are only 4 argument registers.  For this
8844           logic to work the last argument must be pulled from the stack.  
8845
8846         Contributed under MIT/X11 license.
8847
8848 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8851
8852         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8853         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8854         encode/decode_method_ref ().
8855
8856         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8857
8858         * aot-runtime.c (decode_patch): Ditto.  
8859
8860         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8861         MONO_PATCH_INFO_METHOD.
8862
8863         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8864         MonoGenericJitInfo.
8865
8866         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8867         MonoGenericJitInfo.
8868
8869         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8870
8871         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8872         one from the caller.
8873
8874         * aot-runtime.c (decode_generic_inst): New function to decode and
8875         return a interned generic inst.
8876         (decode_klass_ref): Use it.
8877         (decode_method_ref): Ditto.
8878
8879         * aot-compiler.c (emit_exception_debug_info): Save 
8880         jinfo->has_generic_jit_info too.
8881
8882 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8885
8886         * iltests.il.in: Add a test for fconv_to_i.
8887
8888         * liveness.c: Disable the liveness2 pass for now to save space.
8889
8890         * regalloc2.c: Include mempool-internals.h to fix warnings.
8891
8892         * aot-compiler.c (encode_method_ref): Encode the context of generic
8893         instance methods.
8894
8895         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8896         the context saved in the aot file.
8897
8898         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8899
8900         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8901
8902         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8903         volatile so they won't be optimized away.
8904
8905 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8906
8907         * ssa.c:
8908         * ssa2.c:
8909         * mini.c:
8910         * regalloc2.c:
8911         * dominators.c: Remove duplicated functions that now are in
8912         mempool-internals.h.
8913
8914 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8915
8916         * aot-compiler.c: Fix warnings.
8917
8918         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8919
8920         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8921
8922         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8923         as the patch type.
8924
8925         * mini.c (mono_resolve_patch_target): Ditto.
8926         
8927         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8928         (encode_klass_ref): Add support for encoding VARs/MVARs.
8929
8930         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8931
8932         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8933         the handling of the got entries into a separate 'decode_got_entry' function.
8934         Add support for RGCTX_FETCH.
8935
8936         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8937         clobbered by the trampoline code.
8938
8939         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8940         not clobbered by the indirect calling code.
8941
8942 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8943
8944         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8945         to fix the build.
8946
8947 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8948
8949         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8950         signature using the compilation mempool otherwise we would leak it.
8951
8952 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8953
8954         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8955         mono_emit_abs_call ().
8956
8957         * patch-info.h: Add GENERIC_CLASS_INIT.
8958
8959         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8960
8961         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8962         as their target as a near call.
8963
8964         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8965         ABS handling code.
8966         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8967
8968         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8969         call to a runtime function described by a patch.
8970
8971         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8972         mono_emit_abs_call, this has the advantage that the ABS handling code in
8973         mono_codegen () can handle them both, and can handle other stuff in the
8974         future without additional code.
8975
8976         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8977         entry.
8978         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8979         abs addresses.
8980
8981         * mini.h: Add missing bblock related prototypes.
8982
8983         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8984         reverse_inst_list_len fields.
8985
8986         * mini.c: Refactor this file a bit by moving branch optimizations to 
8987         branch-opts.c.
8988
8989         * method-to-ir.c: Merge generic sharing changes missed earlier.
8990
8991         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8992
8993         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8994         shared patches. Process METHODCONST as a shared patch.
8995
8996         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8997         as it crashes on the 2.0 mscorlib.
8998
8999         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9000         to cause crashes.
9001         
9002         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9003         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9004         by IMT.
9005
9006         * aot-compiler.c: Reorganize the got handling code to be a bit more
9007         understandable.
9008
9009 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9010
9011         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9012         mono_patch_info_equals/hash, and use it to massively simplify
9013         get_plt_index ().
9014
9015         * mini.c (mono_patch_info_hash): Simplify this and add support for
9016         more patch types.
9017
9018         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9019
9020         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9021         handling code, since an offset is not enough to identify a trampoline.
9022
9023         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9024
9025 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9026
9027         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9028
9029         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9030
9031         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9032
9033         * decompose.c: PPC decompositions for various ops.
9034
9035         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9036
9037 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9038
9039         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9040         call the generic trampoline code using a call, instead of a jump, to
9041         remove some special casing from the generic trampoline code.
9042
9043         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9044         (mono_codegen): Ditto.
9045
9046         * aot-compiler.c aot-runtime.c: Ditto.
9047
9048         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9049
9050         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9051         helper function to find the offset corresponding to a lazy fetch trampoline.
9052
9053         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9054         when doing generic sharing.
9055
9056         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9057         places.
9058         
9059         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9060         mini-trampolines.c to be with the other trampoline creation functions.
9061
9062         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9063         as it is equal to method->signature in most cases, add a 
9064         mono_emit_method_call_full variant which takes a signature and an imt
9065         argument as well.
9066
9067 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9070         to this function, since it could be computed easily from the method 
9071         argument.
9072         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9073         more.
9074
9075         * method-to-ir.c mini.c: Remove references to 
9076         compile_generic_method_wo_context.
9077
9078         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9079         generic method calls.
9080         
9081         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9082         dimensional non-szarrays.
9083
9084         * mini.c (mini_init): Register mono_array_new_1.
9085
9086         * jit-icalls.c (mono_array_new_1): New jit icall.
9087
9088         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9089         pointing to the method.
9090
9091         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9092         method addresses belonging to METHOD_JUMP patches in the 
9093         jump_target_got_slot_hash.
9094         (mono_aot_load_method): Ditto.
9095
9096         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9097         METHOD_JUMP patches.
9098
9099         * mini.c (mini_create_jit_domain_info): New helper function which 
9100         initializes/frees domain->runtime_info.
9101         (mini_free_jit_domain_info): Ditto.
9102         (mini_init): Install the domain hook functions with the runtime.
9103
9104         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9105         information maintained by the JIT.
9106
9107         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9108         insertion into jump_table_hash into mono_codegen (), also implement proper
9109         locking.
9110
9111         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9112         tail calls, it is already done by the aot code.
9113         
9114         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9115         mechanism on amd64.
9116
9117         * iltests.il.in: Make the jmp test a bit more complex.
9118
9119         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9120         generic instances which doesn't have a token.
9121
9122         * aot-runtime.c (decode_method_ref): Ditto.
9123         
9124         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9125         can handle this case now.
9126         (handle_box): Ditto.
9127
9128 2008-08-15  Geoff Norton  <gnorton@novell.com>
9129
9130         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9131         debugging check.
9132
9133 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9136         calling generic methods.
9137
9138         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9139
9140         * aot-runtime.c (decode_patch_info): Ditto.
9141
9142         * mini.c (mono_resolve_patch_target): Ditto.
9143         
9144         * patch-info.h: Add METHOD_RGCTX.
9145
9146         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9147
9148 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9151         arguments in registers.
9152
9153         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9154         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9155
9156         * mini.c (mini_method_compile): Abort aot compilation for generic
9157         methods if generic sharing is disabled.
9158         
9159         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9160         an mrgctx.
9161
9162         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9163         requiring an mrgctx.
9164
9165         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9166         store instructions when converting a vcall to a normal call.
9167
9168         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9169         mono_arch_find_jit_info.
9170
9171 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9172
9173         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9174         avoid calling mono_method_full_name () for every method even if the
9175         env var is not set.
9176         (check_inline_caller_method_name_limit): Ditto.
9177
9178 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9179
9180         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9181         assemblies in one run.
9182
9183         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9184         skipped methods if it is not 0.
9185
9186         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9187
9188 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9189
9190         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9191           MONO_ARCH_HAVE_UNWIND_TABLE.
9192
9193         Contributed under MIT/X11 license.
9194
9195 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9196
9197         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9198           from default optimizaton list on Winx64.
9199
9200         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9201
9202         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9203           the LMF from the MonoJitTlsData structure.
9204
9205         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9206
9207         Contributed under MIT/X11 license.
9208
9209 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9210
9211         * mini.c (sigsegv_signal_handler): Fix the build.
9212
9213         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9214         assembly->aot_module.
9215
9216         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9217         hash table. This simplifies and speeds up a lot of code, and fixes support
9218         for .netmodules.
9219
9220         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9221         with the runtime.
9222
9223         * mini-exceptions.c: Ditto.
9224         
9225         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9226         'native_offset' argument, since these are computed in the 
9227         mono_find_jit_info () function.
9228
9229         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9230         is used by exceptions-ppc.c.
9231
9232         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9233         mono_arch_find_jit_info ().
9234         
9235         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9236         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9237         generic code in mini-exceptions.c.
9238
9239 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9242
9243         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9244         
9245         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9246         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9247         called while holding the loader lock. Fixes #415608.
9248         (mono_aot_get_method_from_token_inner): Ditto.
9249
9250 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9251
9252         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9253         to reduce differences between this and the generic implementation in
9254         mini-exceptions.c.
9255         (ves_icall_get_frame_info): Ditto.
9256
9257         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9258
9259         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9260         longer neccesarry.
9261
9262         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9263         mono_arch_get_call_filter () and make it non-static, for consistency with the
9264         other architectures.
9265
9266 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9267
9268         * mini.c:
9269         * local-propagation.c:
9270         * mini-x86.c: Correct the name of arch defines.
9271
9272 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9275         NO_EMULATE_LONG_SHIFT_OPS define.
9276
9277 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9278
9279         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9280         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9281
9282         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9283         MACH fixes. Merged from the 2.0 branch.
9284
9285         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9286
9287         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9288         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9289
9290         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9291
9292         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9293         mono_marshal_get_native_wrapper () signature changes.
9294
9295 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9298         conversion bug under arm.
9299
9300 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9301
9302         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9303
9304         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9305         with overflow checking.
9306
9307 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9308
9309         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9310         to the genmdesc.pl file
9311
9312 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9313
9314         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9315         arg_array in the soft-float versions of the LOAD/STORE macros.
9316
9317         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9318         implementation.
9319
9320         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9321
9322 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9323
9324         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9325         a float HFA. Fixes #413621.
9326
9327 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9328
9329         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9330         frame_size to args_size. Fixes build.
9331
9332 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9335         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9336
9337         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9338         the stack are not unaligned. Fixes #413247.
9339         
9340 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9341
9342         * mini.c: update jitted methods performance counters.
9343
9344 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9345
9346         * mini-exceptions.c: increase the exceptions thrown performance
9347         counter in mono_handle_exception ().
9348
9349 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9350
9351         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9352         can work with netmodules.
9353
9354 2008-07-28  Geoff Norton  <gnorton@novell.com>
9355
9356         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9357         regression tests.
9358
9359 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9360
9361         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9362         correct place.
9363
9364 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9365
9366         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9367           The float param registers and other param registers must be the 
9368           same index on Windows x64.
9369
9370         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9371           ArgValuetypeAddrInIReg argument case.  Setting the argument
9372           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9373
9374         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9375           variable computed above as the copy length for arguments of storage
9376           type ArgValuetypeAddrInIReg.
9377
9378         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9379           ArgValuetypeAddrInIReg argument case.  This case will rely on
9380           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9381
9382         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9383           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9384           jump and tail call instructoins as they do not follow the typical call behavior.
9385
9386         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9387           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9388           local variable and pass the local variable by reference to the called method.
9389
9390         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9391           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9392           of a struct is passed in a register it must be saved with the other
9393           volatile argument on the stack.
9394
9395         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9396           frame pointer the stack adjustment value must be saved to the unwind 
9397           info structure.
9398
9399         Contributed under MIT/X11 license.
9400
9401 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9402
9403         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9404         which got lost in the merge.
9405
9406 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9409         build.
9410
9411         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9412         
9413         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9414         icalls, since they won't be patched.
9415
9416         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9417         different code sequence when running under valgrind to prevent some valgrind
9418         errors.
9419
9420         * iltests.il.in: Add new regression test.
9421
9422         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9423         end with a throw.
9424
9425         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9426         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9427
9428         * iltests.il.in: Add new test.
9429
9430         * aot-compiler.c: Fix some warnings.
9431
9432         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9433         Fixes #412494.
9434
9435 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9438         (mini_usage_jitdeveloper): Add a missing --wapi option.
9439
9440 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini-codegen.c: Simplify the is_fp macros.
9443         (free_up_ireg): Remove, use free_up_reg instead.
9444         (free_up_reg): Fix the fp case.
9445
9446 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9447
9448         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9449         lowered earlier.
9450
9451         * exceptions-x86.c: Merge some changes which seemed to have got lost
9452         in the linear-ir merge.
9453
9454         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9455
9456         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9457         long vreg volatile even if the variable was already created.
9458
9459         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9460         volatile variables.
9461
9462 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9463
9464         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9465
9466         * mini.c (mono_jit_compile_method_inner): Add support for 
9467         MONO_EXCEPTION_BAD_IMAGE.
9468
9469         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9470         mini_method_get_context () returns NULL. Fixes #356531.
9471
9472         * mini.c (mono_method_to_ir): Ditto.
9473         
9474         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9475         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9476
9477 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9478
9479         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9480         in the LDFTN implementation.
9481
9482 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9483
9484         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9485         code, patch calls to icalls, too, even if they're not in the
9486         shared generic code hash.  Fixes #411962.
9487
9488 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * cpu-x86.md: Increase the length of the fcall opcodes.
9491
9492         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9493         calls returning floats.
9494
9495         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9496         on NEWARR.
9497         
9498         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9499         missed earlier.
9500
9501         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9502         into the domain->method_code_hash.
9503
9504         * aot-compiler.c: Fix win32 build.
9505
9506         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9507         
9508         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9509         gshared NEWARR implementation.
9510
9511         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9512
9513         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9514         can be used outside of method_to_ir.
9515
9516         * mini.h (MonoCompile): Add arg_types field.
9517
9518         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9519         
9520         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9521         the values of the local arg_array and param_types array.
9522
9523 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9524
9525         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9526         got accesses might only get generated later when NEWOBJ is decomposed.
9527         
9528         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9529         looking up the native code of the target method when a delegate is called
9530         for the first time.
9531
9532         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9533         optimization.
9534
9535         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9536
9537         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9538         AOT work on platforms without a working dlsym implementation.
9539
9540         * mini.h: Bump AOT image format version.
9541         
9542 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9543
9544         * mini-exceptions.c: Free a MonoType with
9545         mono_metadata_free_type() instead of g_free().
9546
9547         * aot-runtime.c: Free a MonoType.
9548
9549 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9552         optimization.
9553
9554         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9555         fp stack on x86.
9556
9557 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9558         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9559         profiler hook.
9560
9561 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9564         NEWOBJ calls on valuetypes.
9565
9566         * iltests.il.in: Add new test.
9567
9568         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9569
9570 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9573         is no longer needed.
9574
9575         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9576         non register sized integer arguments.
9577         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9578         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9579         emit_memcpy2 ().
9580
9581         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9582         CEE_MONO_RETOBJ.
9583         
9584         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9585         two a binop with different sized arguments is emitted.
9586
9587         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9588         instruction in the ins==NULL case.
9589
9590 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9591
9592         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9593
9594         * mini-x86.c: Fix osx build.
9595
9596         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9597         opcodes as well.
9598
9599         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9600         instruction for non int sized variables.
9601
9602         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9603         implementation.
9604
9605 2008-07-23  Robert Jordan  <robertj@gmx.net>
9606
9607         * method-to-ir.c: Fix MSVC build.
9608
9609 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9610
9611         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9612         a non int sized type, widen it to an int since newer versions of gcc seem to
9613         generate code which needs this.
9614
9615         * ssa2.c abcremoval2.c: Fix warnings.
9616
9617         * *: Merge the Linear IR branch.
9618
9619         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9620         the ChangeLog file there describes all the changes done over the years. 
9621         Further documentation can be found at www.mono-project.com/Linear_IL.
9622
9623 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9624
9625         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9626           The float param registers and other param registers must be the 
9627           same index on Windows x64.
9628
9629         Contributed under MIT/X11 license.
9630
9631 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9632
9633         * mini.c: Make the previous fix GC safe.
9634
9635 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9636
9637         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9638
9639 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9640
9641         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9642           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9643           ArgValuetypeAddrInIReg instead.
9644
9645         Contributed under MIT/X11 license.
9646
9647 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9648
9649         * mini-codegen.c (get_register_spilling): Fix a warning.
9650
9651 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9654         for types which the initialization fails. Raises the provided exception
9655         at the right stop after cleanup.
9656
9657 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9658
9659         * aot-compiler.c: Free most of the memory allocated during compilation.
9660
9661         * mini.c (mini_parse_debug_options): Fix a leak.
9662         
9663         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9664         during aot compilation.
9665
9666 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9669         it has too much register pressure.
9670
9671 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9672
9673         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9674
9675 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9678         on x86.
9679
9680         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9681         on amd64 similar to the way it is done on arm.
9682
9683         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9684
9685         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9686         consistency, normalize error messages, avoid loading aot-only modules in
9687         normal mode.
9688
9689         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9690         for consistency.
9691
9692         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9693
9694 2008-07-11  Martin Baulig  <martin@ximian.com>
9695
9696         * debug-debugger.h
9697         (MonoDebuggerInfo): Add `interruption_request'.
9698
9699 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9700
9701         * aot-compiler.c (emit_plt): Remove some dead code.
9702
9703         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9704
9705         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9706         return the plt info offset belonging to a given plt entry.
9707
9708         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9709         mono_aot_get_plt_info_offset.
9710         
9711         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9712         similar to the amd64 code by makeing jumps through a separate jump table 
9713         instead of embedding the jump addresses into the code.
9714
9715 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9716
9717         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9718         method.
9719
9720 2008-07-10  Martin Baulig  <martin@ximian.com>
9721
9722         * mini.c (mini_method_compile): Disable generics sharing when
9723         running in the debugger.
9724
9725 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9726
9727         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9728
9729         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9730         the local register allocator from running out of registers on x86 when 
9731         using aot.
9732
9733 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9734
9735         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9736         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9737         C4146.
9738
9739         Contributed under MIT/X11 license.
9740
9741 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9744         speed up the assembler.
9745
9746 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9749         support.
9750
9751         * mini.c: Move the soft float handling macros a bit earlier, add 
9752         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9753         place.
9754
9755         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9756
9757         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9758         read-only to help catch code allocation requests.
9759         
9760         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9761         and turn it off when using --aot-only or when compiling with --aot=full.
9762
9763         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9764         jump table for switches from the normal domain mempool, not the code
9765         manager.
9766
9767         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9768         unbox trampoline which handles aot-only mode too.
9769
9770         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9771         an AOTed unbox trampoline.
9772
9773         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9774
9775 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9776
9777         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9778         ""
9779
9780         Contributed under MIT/X11 license.
9781
9782 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9783
9784         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9785           the unwind information for the method at the end of the allocated block.
9786           
9787         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9788           MonoCompileArch to hold the unwind info for SEH on Winx64
9789         
9790         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9791           frame pointer info for the method being compiled.
9792           
9793         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9794           the call to mono_exception_from_token.
9795           
9796         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9797           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9798           information is stored a the end of the method block because it is all 32-bit offset based.
9799
9800         Contributed under MIT/X11 license.
9801
9802 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9803
9804         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9805
9806         * wapihandles.c: Fix warnings.
9807
9808         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9809         mode.
9810
9811         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9812         mono_jit_compile_method in aot-only mode since that calls the type 
9813         initializer.
9814         
9815         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9816         get_delegate_invoke_impl in aot-only mode.
9817
9818         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9819
9820 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9821
9822         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9823
9824         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9825         is on by default.
9826
9827         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9828
9829         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9830         init trampoline from the AOT file as well.
9831
9832         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9833         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9834         code.
9835
9836         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9837         mono_init.
9838
9839         * exceptions-amd64.c: Add _full variants for the remaining exception code
9840         creation functions as well, allow emission of relocatable code, remove
9841         caching since that is now done by the caller.
9842
9843         * mini-exceptions.c: Add _full variants for the remaining exception code
9844         creation functions as well, add aot-only support.
9845
9846         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9847         if we can determine a proper token for them.
9848         (add_wrappers): Add a few more wrappers.
9849         (emit_method_code): Remove some dead code.
9850         (emit_trampolines): Emit exception code too.
9851
9852         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9853
9854         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9855         mono_array_new_va which avoids varargs.
9856
9857         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9858
9859         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9860         mono_arch_create_specific_trampoline () in all places.
9861
9862         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9863         a bit so it can be used for other things as well.
9864         
9865         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9866         on demand as well.
9867
9868         * exceptions-amd64.c: Rename the caching from the exception code creation
9869         functions, it is done by the caller instead.
9870         
9871         * exceptions-amd64.c: Change the signature of the exception code creation 
9872         functions to allow the creation of relocatable code later.
9873
9874         * mini-exceptions.c: Add a set of functions to query the various 
9875         runtime-generated exception functions.
9876
9877         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9878         mono_arch_.. () functions.
9879         
9880 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9883
9884         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9885
9886         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9887         (mini_get_vtable_trampoline): Ditto.
9888
9889         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9890         code in the AOT case by returning the code size and a list of relocations to
9891         the caller.
9892
9893         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9894
9895 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9896
9897         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9898           clean the stack.
9899
9900         Contributed under MIT/X11 license.
9901
9902 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9903
9904         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9905         so the buffer size can be computed correctly. Fixes #404735.
9906
9907         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9908         normally as cfg->debug_info is already freed.
9909
9910 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * mini-amd64.c: For calls returning vtypes in registers, don't store
9913         the return address on the stack, instead allocate a separate local for
9914         it. Fixes #404729.
9915
9916 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9917
9918         * mini-trampolines.c, mini.h: Add an argument to
9919         mono_create_jit_trampoline_in_domain() for turning off the adding
9920         of the sync wrapper.
9921
9922         * mini.c: Use the JIT trampoline without sync instead of
9923         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9924         be patched.
9925
9926 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9927
9928         * driver.c: Turn on GSHARED optimization by default.
9929
9930 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9931
9932         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9933         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9934
9935         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9936         create a variant of the generic trampoline code callable from AOTed trampolines.
9937
9938         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9939         trampoline code callable from AOTed trampolines.
9940
9941         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9942
9943 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9944
9945         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9946         pass-through manner.
9947
9948         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9949         and don't fail sharing for them anymore.
9950
9951         * mini-exceptions.c: Handle exceptions in shared generic methods.
9952
9953         * generic-sharing.c: When checking the context of a generic
9954         method, also check its class's context.  Don't treat wrappers as
9955         sharable.
9956
9957         * mini-trampolines.c: Some code factored out to
9958         metadata/generic-sharing.c.  Handle the MRGCTX case.
9959
9960         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9961         we must deal with the method being of another instantiation of the
9962         class.  Add static rgctx invoke wrappers to generic methods.
9963
9964 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9965
9966         * mini.c: Provide all jit infos of generic shared methods with a
9967         generic jit info.
9968
9969         * mini-exceptions.c: Handle the new situation that a generic info
9970         might be available, but not info about the this/vtable/mrgctx
9971         variable.
9972
9973 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9974
9975         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9976         generic methods.
9977
9978 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9979
9980         * dominators.c (check_dominance_frontier): Fix a warning.
9981
9982         * mini.h: Add some missing prototypes.
9983
9984         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9985
9986         * driver.c (mono_jit_init_version): Correct the comments since the first
9987         argument should be the name of the root domain, not a filename.
9988
9989         * aot-runtime.c (make_writable): Error out if this is called while running
9990         with --aot-only.
9991         (load_aot_module): Ditto.
9992
9993         * aot-compiler.c: Really fix the computation of method indexes.
9994
9995         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9996         optimizations as this is no longer called frequently.
9997
9998         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9999         method and the invoke impl code and pass it to the delegate trampoline instead of
10000         just the delegate class.
10001
10002 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10003
10004         * aot-compiler.c: Fixup the computation of method indexes.
10005         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10006         the method builder infrastructure.
10007
10008         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10009         has no header.
10010
10011         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10012         mode, load the method right away instead of creating a trampoline.
10013
10014         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10015
10016         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10017         some checks a bit.
10018
10019 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10022         (mono_aot_load_method): Use method_index instead of method->token.
10023
10024         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10025         can handle icalls etc. properly.
10026
10027         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10028
10029         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10030
10031         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10032         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10033         JIT_ICALL_ADDR patch type.
10034
10035         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10036
10037         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10038         request flag.
10039         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10040
10041         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10042
10043 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10046         domain->jit_code_hash.
10047
10048 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10049
10050         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10051
10052 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10055         get_this_arg_from_call, let it compute it when needed.
10056
10057         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10058         gsctx from code only when needed.
10059
10060         * mini-trampolines.c (get_generic_context): Rename this to 
10061         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10062         it can be called by the arch backends.
10063
10064         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10065
10066 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10067
10068         * driver.c (mono_main): Add experimental --aot-only command line option.
10069
10070         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10071         set.
10072
10073 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10074
10075         * driver.c (DllMain): Remove mono_module_handle.
10076
10077         Contributed under MIT/X11 license.
10078
10079 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10082         for emitting methods which are not in the source assembly. Detect and report
10083         failure of assembling+linking.
10084         
10085         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10086
10087         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10088
10089 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10090
10091         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10092
10093 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10094
10095         * mini.h: Remove some obsolete prototypes.
10096
10097         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10098
10099 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10100
10101         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10102         supported by Visual Studio, so use alloca().
10103
10104 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10105
10106         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10107         Fixes #402585.
10108
10109 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10110
10111         * mini.c: Fail sharing of a generic method if it contains an open
10112         catch clause (because we don't pass MRGCTXs yet).
10113
10114 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10115
10116         * mini.c: When compiling a method with generic sharing, insert the
10117         method instantiated with an all-Object generic context into the
10118         jit info table, instead of the context of the first instantiation
10119         of the method we happen to compile.
10120
10121 2008-06-18  Martin Baulig  <martin@ximian.com>
10122
10123         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10124         `major_version' and `minor_version'.
10125
10126 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10127
10128         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10129         mono_method_is_generic_sharable_impl() takes an additional
10130         argument specifying whether to treat type variables as reference
10131         types.
10132
10133 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10134
10135         * mini.h: Removed obsolete prototypes.
10136
10137 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10138
10139         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10140         already handle them.
10141
10142 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10143
10144         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10145         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10146         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10147         tramp-x86.c: Added a MonoGenericContext* argument to
10148         mono_arch_get_unbox_trampoline() so that it can call other
10149         functions which require it.
10150
10151 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10152
10153         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10154         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10155         mono_arch_get_this_arg_from_call() takes a
10156         MonoGenericSharingContext* as well.
10157
10158 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10159
10160         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10161         implement generic sharing of unbox.
10162
10163 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10164
10165         * mini.c: Don't compute the vtable to determine whether a field is
10166         special static, because it might not work for open types.
10167
10168 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10169
10170         * mini.c: Removed the unused token_type and token_source arguments
10171         from get_runtime_generic_context_ptr().
10172
10173 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10174
10175         * mini.c (ADD_BINOP): fix the build
10176
10177 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10178
10179         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10180         a widening op.
10181
10182 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10183
10184         * mini.h: Removed class relations enum that's not used anymore.
10185
10186 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10187
10188         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10189
10190         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10191         the lazy fetch trampoline access code.
10192
10193 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10196
10197 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10200
10201         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10202
10203         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10204
10205 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10208         intrinsics.
10209
10210         * mini-ops.h: Add MIN/MAX_UN opcodes.
10211
10212         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10213         intrinsics.
10214
10215         * basic-math.cs: Add more min/max tests.
10216
10217         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10218
10219 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10220
10221         * mini.c: Small fix in the prologue of emit_castclass.
10222
10223 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10226
10227         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10228         do not work even for unsigned types. Fixes #400014.
10229
10230         * basic-math.cs: Add regression tests for unsigned Min/Max.
10231
10232 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10233
10234         * mini.c: Added additional context_used argument to several
10235         functions, which will be needed for sharing generic methods.  Use
10236         GET_RGCTX macro wherever appropriate.  Declare only one
10237         context_used in mono_method_to_ir().
10238
10239 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10240
10241         * mini.c, generic-sharing.c: Removed generic class relations.
10242
10243         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10244         functions due to MRGCTX changes.
10245
10246 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10247
10248         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10249         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10250         with calculated IMT.
10251
10252         * mini.c: Generic sharing of calls via generic interfaces.
10253
10254         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10255         generic method with non-constant MonoGenericContext*.  Instead,
10256         the context is taken out of the method itself.
10257
10258 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10259
10260         * mini.c: Generic sharing of ldvirtftn.
10261
10262 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10263
10264         * mini.c: Generic sharing of ldftn.
10265
10266 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10267
10268         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10269
10270 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10271
10272         * mini.c: Generic sharing of the special case of ldtoken followed
10273         by a call to GetTypeFromHandle.
10274
10275 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10276
10277         * mini.c: Generic sharing of box for nullable types.
10278
10279 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10282         are passed on the stack. Fixes #324807.
10283
10284 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10285
10286         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10287         for the ArgValuetypeAddrInIReg case.
10288
10289         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10290         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10291
10292         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10293         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10294         local variable and pass the local variable by reference to the called method.
10295           
10296         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10297         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10298
10299         Contributed under MIT/X11 license.
10300
10301 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10302
10303         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10304
10305         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10306         everything.
10307
10308 2008-06-10  Martin Baulig  <martin@ximian.com>
10309
10310         * debug-mini.c
10311         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10312
10313 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10314
10315         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10316         possible error when no arguments are passed.
10317
10318         Contributed under MIT/X11 license.
10319
10320 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10321
10322         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10323         where the file name is NULL.
10324
10325 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10326
10327         * mini.c: Fix s390 build.
10328
10329 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * trace.c (mono_trace_parse_options): Fix warnings.
10332
10333         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10334
10335 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini.c (remove_block_if_useless): Avoid printing the method name.
10338         
10339         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10340         MONO_INST_NEW.
10341
10342         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10343         LMF. Not yet used.
10344
10345         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10346         translated code after it has been patched.
10347
10348 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10349
10350         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10351         avoid problems during code patching on SMP systems.
10352         (emit_call): Avoid adding a patch info which is already added by 
10353         emit_call_body.
10354         (mono_arch_emit_exceptions): Ditto.
10355
10356 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10359         MONO_TYPE_ISSTRUCT already checks for it.
10360
10361 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10362
10363         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10364           structs with floats on Winx64 the float registers are not used.  
10365           The integer registers are always used..
10366         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10367           only one register will be used and only if the size of the struct 
10368           is 1,2,4, or 8 bytes.
10369
10370         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10371           to work for Winx64.
10372
10373         Contributed under MIT/X11 license.
10374
10375 2008-06-05  Martin Baulig  <martin@ximian.com>
10376
10377         * debug-debugger.c (debugger_lookup_class): Also call
10378         mono_class_setup_methods() here; we're only called from RTI.
10379
10380 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10381
10382         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10383         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10384         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10385         Post-process object files and add dtrace-generated object, if necessary.
10386
10387         Contributed under MIT/X11 license.
10388
10389 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10390
10391         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10392         element class.
10393
10394         * mini.c: Generic sharing for unbox.any and castclass.
10395
10396 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10397
10398         * mini.c: Ignore tailcall prefix in shared generic code and when
10399         doing calls which require a vtable/rgctx argument.
10400
10401 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10402
10403         * mini.c: Don't free the JIT info.
10404
10405         * driver.c: Changes in the JIT info table testing code.
10406
10407 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10408
10409         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10410         interruption. Fix some warnings.
10411
10412         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10413         interruption_checkpoint.
10414
10415 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10416
10417         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10418         from embedding applications.
10419
10420 2008-06-02  William Holmes  <billholmes54@gmail.com>
10421
10422         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10423           reserving 32 bytes on the stack when making calls. 
10424
10425         Contributed under MIT/X11 license.
10426
10427 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10428
10429         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10430         the linear IL branch.
10431
10432         * driver.c: Print out more information for --version on arm.
10433
10434 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10437         bb_exit instead, since out of line bblocks might not actually be emitted
10438         out-of-line.
10439         
10440         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10441         maximum epilog size for out of line bblocks if tracing is enabled.
10442
10443         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10444
10445 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10446
10447         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10448
10449 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10452         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10453         opcodes.
10454
10455 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10456
10457         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10458         the 'value' to store is a constant.
10459
10460         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10461
10462         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10463         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10464
10465 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10466
10467         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10468         for accessing method->generic_container.
10469
10470 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10473         
10474         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10475
10476         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10477
10478         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10479         fails.
10480
10481 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10484
10485         * mini.c: Handle the case when mono_class_vtable () fails.
10486
10487 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10488         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10489         the stat profiler.
10490
10491 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10492
10493         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10494         together with domain sharing.
10495
10496 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10497
10498         * mini.c: Treat callvirts to final methods like non-virtual calls
10499         when doing generic sharing, i.e. look them up in the runtime
10500         generic context.
10501
10502 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10503
10504         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10505         with computed types (for generic sharing).
10506
10507         * mini.c: Generic sharing for mkrefany and refanyval.
10508
10509 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10512         possible.
10513
10514         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10515         the generic sharing code.
10516         
10517         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10518         when needed.
10519
10520 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10521
10522         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10523
10524 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10525
10526         * driver.c: updated copyright date
10527
10528 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10529
10530         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10531         needed.
10532
10533 2008-05-19  Martin Baulig  <martin@ximian.com>
10534
10535         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10536         pointing to the new `_mono_debug_using_mono_debugger' variable.
10537
10538         * driver.c
10539         (mono_main): Check mono_debug_using_mono_debugger() rather than
10540         the `MONO_INSIDE_MDB' environment variable to check whether we're
10541         inside the debugger.
10542
10543 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10544
10545         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10546         argument.
10547
10548 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10549
10550         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10551
10552         * mini.c: Added mini_assembly_can_skip_verification. This
10553         function checks if the assembly requested to skip verification. 
10554         Fixes part of #387274.
10555
10556 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * mini.c (mini_get_method): Disable the check for open generic classes when
10559         using generic sharing.
10560
10561         * generics.cs: Add a test for #387034.
10562
10563         * mini.c (mini_get_method): Check whenever the method class is an open generic
10564         type, and return NULL in that case, causing a verification error. Fixes
10565         #384123.
10566
10567 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10568
10569         * driver.c (mono_main): Revert r102623. The right
10570         thing to do is to enable the verifier under verifiable
10571         unless a --security flag was passed.
10572
10573         We need this non-trivial behavior for --verify-all otherwise
10574         mcs-compileall won't be able to use it. As it needs everything to
10575         be verified under validil.
10576
10577 2008-05-06  Martin Baulig  <martin@ximian.com>
10578
10579         Fix #383749.
10580
10581         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10582         (mono_debugger_thread_cleanup): Likewise.
10583         (mono_debugger_extended_notification): Likewise.
10584
10585 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10586
10587         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10588         against both inflated and non-inflated methods. We need to check against the
10589         generic definition for cases where the instantiated method is not visible.
10590         We need to check against the inflated types for cases where the instantiation
10591         changes any super type. This fixes #382986.
10592
10593         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10594         that check for visibiliy as generic params only appears as the type subject
10595         of tokens on call opcodes. Field manipulation and ldftn must always
10596         target an exact type.
10597
10598 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10599
10600         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10601         if no related --security flag is passed.
10602
10603 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10604
10605         * mini-arch.h: Prepare support for ppc64.
10606
10607         Contributed under MIT/X11 license.
10608
10609 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10610
10611         * aot-runtime.c: Prepare support for ppc64.
10612
10613         Contributed under MIT/X11 license.
10614
10615 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10616
10617         * mini-ops.h: Prepare support for ppc64.
10618
10619         Contributed under MIT/X11 license.
10620
10621 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10622
10623         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10624
10625         Contributed under MIT/X11 license.
10626
10627 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10630         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10631         assemblies on windows.
10632
10633 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10634
10635         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10636         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10637         * main.c: Use UTF-8 encoded command line instead of Windows default code
10638         page on Windows to support Unicode.
10639         * driver.c (DllMain): New function for mixed-mode assembly support.
10640         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10641         export __stdcall functions without decoration.
10642
10643         Contributed under MIT/X11 license.
10644
10645 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10646
10647         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10648         saving it very early.
10649
10650 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10651
10652         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10653         deleted.  The only way to access the new RGCTX is via the
10654         trampline.
10655
10656         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10657         vtable instead of the RGCTX to static methods.
10658
10659         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10660         accessing the new RGCTX.
10661
10662         * generic-sharing.c: There is no separation between self, type
10663         arguments and other types in the RGCTX anymore.
10664
10665 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10666
10667         * mini-amd64.c (add_general): Remove previous stack adjustment.
10668         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10669         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10670         for 32 bytes of stack space reserved for all calls.
10671         
10672         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10673         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10674         adjustment.
10675         
10676         Code contributed under MIT/X11 license.
10677
10678 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10679
10680         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10681         against the root definition, peeling out method and type instantiations.
10682         Cache verify success results, code that fails verification is still
10683         checked multiple times.
10684
10685 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10688
10689 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10690
10691         * mini-amd64.c (add_general): Always increment stack on Win64.
10692         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10693         on Win64.
10694         
10695         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10696         stack based argument handling on Win64.
10697         
10698         Code contributed under MIT/X11 license.
10699
10700 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10701
10702         * Makefile.am (version.h): Add support for git-svn.
10703
10704 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10707         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10708         avoiding allocations and libc functions which might deadlock.
10709         
10710         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10711         'no-gdb-backtrace' option is set.
10712
10713         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10714
10715         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10716
10717 2008-04-21  Martin Baulig  <martin@ximian.com>
10718
10719         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10720         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10721
10722 2008-04-21  Martin Baulig  <martin@ximian.com>
10723
10724         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10725         `thread_vtable', `event_handler_ptr' and `event_handler'.
10726
10727 2008-04-21  Martin Baulig  <martin@ximian.com>
10728
10729         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10730         allows delayed initialization of the `executable_code_buffer' when
10731         attaching.
10732
10733 2008-04-21  Martin Baulig  <martin@ximian.com>
10734
10735         * mini.h (mono_debugger_create_notification_function): Removed.
10736         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10737
10738         * mdb-debug-info64.s
10739         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10740
10741         * mdb-debug-info32.s
10742         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10743
10744         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10745         currently only works on x86 and x86_64, so don't create it on ppc.
10746
10747 2008-04-21  Martin Baulig  <martin@ximian.com>
10748
10749         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10750
10751         * mini.c
10752         (mini_method_compile): In the fp elimination check, check
10753         `debug_options.mdb_optimizations' in addition to
10754         mono_debug_using_mono_debugger().       
10755
10756         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10757         disable some JIT optimizations which are only disabled when
10758         running inside the debugger.
10759         Added `--help-debug' option to describe the debugging options.
10760         (parse_debug_options): New static function to parse the `--debug'
10761         options, so we can easily add more stuff in future.
10762
10763 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10764
10765         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10766         the method has no body.
10767
10768 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10769
10770         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10771         assembly is not allowed in MSVC 64-bit compiler. 
10772         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10773         as we get floating point exceptions everywhere.
10774         
10775         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10776         correctly align arguments for call to throw_exception.
10777         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10778         
10779         Code contributed under MIT/X11 license.
10780
10781 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10784
10785 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10788
10789         * mini-amd64.c (NEW_INS): Set cil_code.
10790
10791         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10792         from mini-amd64.c so all debugger related logic is in one place.
10793
10794         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10795         later won't have a random ip assigned to them.
10796
10797 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10800         the arch specific function initializes code_size.
10801         (mono_create_delegate_trampoline): Ditto.
10802
10803         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10804         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10805         platforms.
10806
10807         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10808         running under the debugger.
10809
10810         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10811         debugger.
10812
10813         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10814         debugger. Also move the disabling of optimizations here from driver.c.
10815         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10816         debugger.
10817
10818         * mini.h (MonoCompile): Add a few new flags.
10819
10820 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10823         so the cil_code field of created MonoInst's is properly set.
10824         (mini_select_instructions): Ditto.
10825
10826         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10827         (MONO_INST_NEW_CALL): Ditto.
10828
10829         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10830         in many places so the ins->cil_code field is properly initialized.
10831
10832         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10833         place.
10834
10835 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * mini.c (mini_method_compile): Print a different message when compiling a 
10838         shared method.
10839         
10840         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10841         > 1.
10842
10843 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10846         SSE2 instructions.
10847
10848         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10849         
10850 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10851
10852         * mini.c (handle_stack_args): Make this return void since its return value was
10853         never used. Also set cfg->unverifiable for invalid IL instead of calling
10854         G_BREAKPOINT ().
10855
10856 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10857
10858         * mini.c: Make sure "this" is live in catch clauses with type
10859         variables in shared generic code.
10860
10861 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10862
10863         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10864         generic_class_is_reference_type() to ensure the proper behaviour
10865         when sharing generic code and the type in question is a type
10866         argument.
10867
10868 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10869
10870         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10871         race conditions when printing thread dumps. Fixes #377738.
10872
10873 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10874         
10875         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10876         shows up when both MonoInst arguments can cause aliasig.
10877         There is likely no way in the current JIT to trigger this problem, but
10878         it showed up in the development of generics sharing, when in a new
10879         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10880         When the generics sharing code will be committed, its tests will be
10881         valid also for this bug.
10882
10883 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10884
10885         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10886         PATCH_INFO_METHOD.
10887
10888         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10889         NULL.
10890
10891 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10892
10893         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10894         use a more detailed exception message for InvalidCastException.
10895
10896         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10897
10898         * driver.c (mono_main): Add --debug=casts option to turn on better 
10899         InvalidCastException message details.
10900
10901         * mini.c (mini_get_debug_options): New helper function to return the address of
10902         the debug_options variable.
10903
10904         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10905         the jit_tls TLS variable.
10906
10907         * mini.c (mono_jit_tls): New TLS variable.
10908
10909         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10910         option is used.
10911
10912 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10913
10914         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10915
10916         * mini.c: Removed verifer related stuff, code moved to verify.c.
10917
10918         * driver.c: Using code from verify.c instead of mini.c.
10919
10920 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10923         longer valid.
10924
10925 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10926
10927         * mini.c (check_for_method_verify): Enabling verification of
10928         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10929         have been fixed.
10930
10931 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10934         caller saved registers as well.
10935         
10936         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10937         saved registers as well.
10938
10939 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10940
10941         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10942
10943         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10944         code.
10945
10946 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10949         to get_call_info.
10950         (get_call_info): Take a gsctx argument instead of 'cfg'.
10951
10952 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10955         mono_verify_all is set.
10956
10957         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10958
10959         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10960
10961 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10964         an exception.
10965
10966         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10967         verifier and the code generated by the compiler.
10968
10969 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10970
10971         * mini.c: Generic sharing of the non-nullable case of the box
10972         instruction.
10973
10974 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10975
10976         * inssel.brg: Fix the build.
10977
10978         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10979
10980 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10981
10982         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10983         Array:Address. Fixes #372410.
10984
10985         * iltests.il.in: New tests for readonly prefix.
10986
10987 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10988
10989         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10990         mini-trampolines.c.
10991
10992         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10993         mini-exceptions.c.
10994
10995         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10996         
10997         * mini.c (mono_decompose_op_imm): New helper function.
10998
10999         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11000         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11001         return value.
11002
11003         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11004         mono_arch_output_basic_block. Fix warnings.
11005
11006         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11007         for now.
11008
11009 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11012         since the extra frame is now detected automatically inside the loop.
11013
11014         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11015         opts which are now in mono_peephole_ins ().
11016         
11017         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11018
11019         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11020         frames and skip duplicate managed-to-native frames. Fixes #367665.
11021
11022         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11023         opts which are now in mono_peephole_ins ().
11024         (mono_arch_peephole_pass_2): Ditto.
11025
11026         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11027
11028         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11029         arch independent peephole optimizations.
11030
11031         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11032         opts which are now in mono_peephole_ins ().
11033
11034         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11035         
11036         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11037
11038         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11039         pattern.
11040
11041         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11042         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11043         opcode. 
11044
11045 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11048         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11049         return value.
11050
11051         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11052         mono_arch_output_basic_block. Fix warnings.
11053
11054 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11057         conv.ovf.u.un.
11058
11059 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11062         conv.ovf.u.un.
11063
11064         * iltests.il: Add new tests.
11065
11066 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11067
11068         * mini.c: Removed Windows version macros.
11069
11070 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11071
11072         * generic-sharing.c: Put reflection types in the extensible part
11073         of the runtime generic context.
11074
11075         * mini.c: Generic sharing of the GetTypeHandle special case of the
11076         ldtoken instruction.
11077
11078 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11081
11082         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11083         
11084         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11085         consistency with the other version on the linear IR branch.
11086
11087         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11088
11089         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11090
11091         * iltests.il.in: Add new tests.
11092
11093 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11096
11097         * iltests.il.in: Add new tests.
11098
11099 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11100
11101         * mini.c: Two variables with the same name were declared in
11102         nesting contexts and one wasn't initialized.  Fixed.
11103
11104 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11105
11106         * mini.c: Generic sharing of the initobj instruction.
11107
11108 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11109
11110         * mini.c: make the test to optimize ldtoken from typeof() more
11111         precise.
11112
11113 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11114
11115         * mini.c: Generic sharing of the initobj instruction for reference
11116         types.
11117
11118 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11119
11120         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11121         the mono_breakpoint_clean_code() code to perform bound checks.
11122
11123 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11124
11125         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11126         mono_arch_patch_callsite() to include the start of the managed method
11127         to be able to perform bound checks.
11128
11129 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11130
11131         * mini.c: Generic sharing for the isinst instruction.
11132
11133 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11134
11135         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11136         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11137         with the runtime generic context argument.
11138
11139         * mini.c: Share calls to several types of unsharable methods by
11140         putting the address of the method code in the runtime generic
11141         context and doing an indirect call.
11142
11143         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11144         to switches.
11145
11146 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11147
11148         * generic-sharing.c: Change due to a change in the runtime genric
11149         context API.
11150
11151 2008-03-15  Martin Baulig  <martin@ximian.com>
11152
11153         * tramp-x86.c
11154         (mono_arch_nullify_class_init_trampoline): Add call to
11155         mono_breakpoint_clean_code() to make things work when running
11156         inside the debugger.
11157
11158         * tramp-amd64.c
11159         (mono_arch_nullify_class_init_trampoline): Add call to
11160         mono_breakpoint_clean_code() to make things work when running
11161         inside the debugger.
11162
11163 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * inssel-long.brg (reg): Fix 64 bit build.
11166
11167 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11168
11169         * mini.c, mini.h: Share static generic code by passing it an
11170         implicit argument pointing to the runtime generic context.
11171
11172         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11173         inssel-long32-mips.brg: New opcodes for calling shared static,
11174         which need to be passed the runtime generic context.
11175
11176         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11177         argument on the stack in the prologue if needed.  New function for
11178         finding the runtime generic context argument from the registers
11179         saved by the trampoline.
11180
11181         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11182         runtime generic context argument.
11183
11184         * tramp-amd64.c: Also restore the register used for the runtime
11185         generic context argument.
11186
11187         * mini-trampoline.c: Resolve shared static calls by consulting the
11188         runtime generic context via the new argument.
11189
11190         * generic-sharing.c: Add an argument to sharability-checking
11191         functions that specifies whether type variables should be treated
11192         as sharable type arguments.
11193
11194         * inssel-x86.brg: Removed a superfluous, buggy rule.
11195
11196         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11197         to switches.
11198
11199 2008-03-14  Martin Baulig  <martin@ximian.com>
11200
11201         * debug-debugger.c (main_thread_handler): Call
11202         mono_runtime_run_main() without sending any notifications.
11203
11204         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11205
11206 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11207
11208         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11209
11210 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11211
11212         * tramp-x86.c: Fixed register restore offsets in the trampoline
11213         code for ECX and EDX.
11214
11215 2008-03-12  Geoff Norton  <gnorton@novell.com>
11216
11217         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11218         different ucontext_t implementations.
11219         * exceptions-arm.c: Use the above defines to get exceptions working on 
11220         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11221         * mini-arm.c: Implement iPhone icache support (based on a patch by
11222         Luke Howard lukeh@padl.com)
11223
11224 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11225
11226         * mini.c: Enable generic sharing of calls to non-static
11227         non-interface non-generic non-value-type methods.
11228
11229         * mini-trampolines.c: Resolve calls from shared generic code.
11230
11231 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11234
11235         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11236
11237 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11238
11239         * mini.c: some fixes for the AOT compiler.
11240
11241 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * cpu-amd64.md: Add clob:1 to some float opcodes.
11244
11245 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11246
11247         * mini.h: Added MiniVerifierMode enumeration.
11248
11249         * mini.c: Added mini_verifier_set_mode to control
11250         the usage of the new verifier.
11251
11252         * mini.c (mono_method): Integrated the new verifier.
11253
11254         * driver.c: Extended --security option with validil and
11255         verifiable options to activate the new verifier.
11256
11257 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11260         optimization to ctors taking 0 or 2 arguments too.
11261
11262         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11263         a bit.
11264
11265         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11266
11267         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11268
11269 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11270
11271         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11272         non-aot case as well.
11273
11274         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11275
11276         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11277         changes.
11278
11279         * aot-compiler.c (encode_patch): Ditto.
11280
11281         * mini.h (G_MININT32): Fix the definition of this.
11282
11283 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11284
11285         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11286
11287         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11288
11289 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11290
11291         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11292         methods returning vtypes in registers.
11293         (mono_arch_allocate_vars): Ditto.
11294
11295         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11296
11297         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11298
11299         * generics.cs: Add a test from the linear IR branch.
11300
11301         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11302
11303         * mini.c (inline_method): Cache failed inline attempts.
11304
11305 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11306
11307         * mini.c: For shared methods of generic classes put the location
11308         of "this" into the MonoGenericJitInfo.
11309
11310         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11311         register out of a MonoContext by register number.  Add the generic
11312         sharing context as an argument to mono_arch_find_this_argument().
11313
11314         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11315         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11316         for new arch function.
11317
11318         * mini-exception.c: Handle open exception clauses in shared
11319         generic code.
11320
11321         * mini-trampolines.c: Supply additional argument to
11322         mono_arch_find_this_argument().
11323
11324 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * Makefile.am (regtests): Run the bench.exe tests last.
11327
11328 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11331         a bit.
11332
11333 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11336         with MS.
11337
11338         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11339         
11340         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11341
11342         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11343         whose class has no cctor.
11344
11345         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11346
11347 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11350         unverified.
11351
11352 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11355         to be in sync with the code on the linear IR branch.
11356
11357         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11358
11359         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11360
11361 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11364
11365         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11366
11367         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11368
11369         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11370
11371         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11372         
11373         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11374         body.
11375
11376 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11377
11378         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11379         OP_LOADR4_MEMBASE emission.
11380
11381         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11382         (mono_spillvar_offset_float): Ditto.
11383
11384         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11385
11386         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11387         emission.
11388
11389         * basic-long.cs: Add regression tests for them.
11390
11391         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11392         use.
11393         (mono_arch_allocate_vars): Fix representation of single-precision float
11394         argument.
11395         (mono_arch_output_basic_block): Ditto.
11396
11397         * inssel-mips.brg: Ditto, remove duplicate items.
11398
11399         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11400         arguments of tail calls as on other platforms.
11401         (mono_arch_output_basic_block): Handle tail calls.
11402
11403         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11404         register.
11405
11406         * objects.cs (test_5_pass_static_struct): Add test for it.
11407
11408         Contributed under MIT/X11 license.
11409
11410 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * Makefile.am: Use gmcs for compiling the regression tests.
11413
11414         * *.2.cs *.2.il: Rename to *.cs and *.il.
11415
11416 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * regalloc.h: Make the vassign array smaller.
11419
11420         * mini.c (mini_method_compile): Remove an unused field in cfg.
11421
11422         * mini-codegen.c: Add a bunch of micro optimizations.
11423
11424 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * regalloc.h: Remove some unused fields.
11427
11428 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11429
11430         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11431
11432         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11433
11434 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11435
11436         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11437
11438         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11439         trampoline: Fetch an entry from the runtime generic context.  If
11440         it's NULL, jump to the actual trampoline to fill the runtime
11441         generic context.  Otherwise, return it.
11442
11443         * mini.c: Call the lazy fetch trampoline to get entries out of the
11444         runtime generic context.
11445
11446         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11447         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11448         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11449
11450 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11451
11452         * mini.c: Fetch data out of the extensible part of the runtime
11453         generic context instead of calling a helper function.
11454
11455         * generic-sharing.c: Some functions moved into
11456         metadata/generic-sharing.c.  Helper function for fetching other
11457         types now checks and asserts against extensible rgctx (just for
11458         debugging purposes - the helper function isn't called anymore
11459         unless for debugging).
11460
11461 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11462
11463         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11464         for tail calls up to the point that the tests in iltests.exe run. Also add a
11465         dummy CKFINITE implementation.
11466         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11467         needed for trampoline LMF frames.
11468
11469         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11470         trampoline LMF frames.
11471
11472 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11473
11474         * mini.c (inline_method): clean any pending loader error when inlining fail.
11475         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11476
11477 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11480
11481         * aot-runtime.c (decode_patch_info): Ditto.
11482
11483         * mini.c (mono_resolve_patch_target): Ditto.
11484         
11485         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11486         icall wrappers.
11487
11488         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11489         
11490         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11491         if it references an icall address.
11492
11493 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * cpu-s390x.md: Remove some more unused opcodes.
11496         
11497         * cpu-s390x.md: Remove some unused opcodes.
11498
11499         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11500         mono_op_imm_to_op ().
11501
11502         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11503         instead of a switch statement.
11504         
11505         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11506         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11507
11508         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11509         
11510         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11511
11512         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11513         -1.
11514
11515 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11516
11517         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11518         opened. Fixes #362607.
11519
11520         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11521
11522         * iltests.il.in: Add a test for static methods in interfaces.
11523
11524 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * genmdesc.c (build_table): Fix a crash on older glib versions.
11527
11528         * cpu-sparc.md: Remove some unused opcodes.
11529         
11530         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11531         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11532
11533         * cpu-amd64.md: Remove some unused opcodes.
11534
11535         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11536         like the other opcodes.
11537
11538 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11539
11540         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11541
11542         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11543
11544         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11545         variables 'cfg' instead of 'm' for consistency.
11546
11547         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11548
11549         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11550         argument holding the vtype return address, to avoid the ambigious use of
11551         cfg->ret for this purpose.
11552
11553         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11554
11555         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11556         
11557         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11558         new mono_print_ins () function which only takes one argument.
11559
11560 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11563         macro arguments.
11564
11565 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11568
11569         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11570
11571         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11572         opcodes and other small changes.
11573
11574         * mini-ops.h: Add some new opcodes from the linear IR branch.
11575
11576         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11577
11578         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11579         opcodes, use the REG_MEMBASE opcodes instead.
11580         
11581         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11582         opcodes, use the REG_MEMBASE opcodes instead.
11583         
11584         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11585         linear IR branch.
11586
11587         * mini.c (mono_op_imm_to_op): New helper function.
11588
11589         * mini-ops.h: Add some opcodes from linear IR branch.
11590
11591 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11594         <tsv@solvo.ru>.
11595
11596 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11599         OP_ICONV_TO_R4/R8.
11600
11601         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11602
11603 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * aot-compiler.c (emit_method_code): Add an assert.
11606
11607         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11608         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11609         methods.
11610
11611 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11614         some load/store opcodes so they are consistent. 
11615         (mono_arch_emit_prolog): Simplify some code.
11616
11617         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11618
11619         * objects.cs: Add tests for large argument offsets on ARM.
11620
11621         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11622         stack offsets. Fixes #359651.
11623
11624         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11625
11626         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11627
11628         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11629
11630         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11631
11632         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11633
11634         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11635         rid of CEE_CONV_R_UN.
11636
11637         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11638
11639 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11640
11641         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11642
11643         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11644
11645         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11646
11647         * cpu-amd64.md: Remove some unused opcodes.
11648
11649         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11650
11651         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11652
11653         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11654         arch specific functions for its parts. Call the peephole pass after local
11655         regalloc so the prolog can compute a more accurate max_offset.
11656         
11657         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11658         the corresponding OP_I/OP_L opcodes.
11659
11660         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11661
11662         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11663
11664 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11665
11666         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11667         as they are handled in mini.c.
11668
11669         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11670         
11671         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11672         case since it is handled in mini.c.
11673
11674         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11675
11676         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11677
11678         * *.c: Use the new opcodes in the IR and back end code.
11679
11680         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11681
11682         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11683
11684 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11685
11686         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11687         an assert because it has a race condition.
11688
11689 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11692
11693         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11694
11695         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11696
11697         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11698         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11699
11700 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11701
11702         * cpu-amd64.md (move): Correct the maximum size of move.
11703
11704 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11705
11706         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11707         the generic class init trampoline to return quickly if the class
11708         is already inited.
11709
11710 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11711
11712         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11713         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11714
11715 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11718         branch.
11719
11720 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11721
11722         * objects.cs: Add some soft-float tests.
11723
11724         * mini.c: Fix a couple more soft-float issues.
11725
11726         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11727
11728         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11729         avoid a REX prefix.
11730
11731 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11732
11733         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11734         exception happens while compiling a virtual method.
11735
11736 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11737
11738         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11739         
11740         * mini-sparc.c: Fix build.
11741
11742         * mini-sparc.c (get_call_info): Add support for generic sharing.
11743
11744         * mini-exceptions.c: Add a FIXME.
11745
11746 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11749         altstack handling code.
11750
11751         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11752         
11753         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11754
11755         * mini-s390.c: Add support for generic sharing.
11756
11757         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11758         Fix CAS on s390.
11759         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11760
11761         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11762
11763         * mini-s390x.c: Add support for generic sharing.
11764         
11765         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11766         Fix CAS on ia64.
11767         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11768
11769         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11770         can be used since it takes a 16 bit signed immediate.
11771
11772         * inssel-s390x.brg: Fix OP_SETRET.
11773
11774         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11775
11776         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11777
11778         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11779
11780         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11781
11782         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11783         in one place.
11784
11785         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11786         stuff.
11787
11788         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11789         of the unused mono_arch_patch_delegate_trampoline stuff.
11790
11791 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * basic-long.cs: Move the fp related tests to basic-float.cs.
11794
11795         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11796
11797         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11798
11799         * basic-calls.cs: Add a test for proper float argument passing.
11800
11801         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11802         if the context corresponds to an exception received through a signal.
11803
11804         * exceptions.cs: Add a test for nullref handling at the start of a try
11805         clause.
11806
11807         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11808
11809         * jit-icalls.c (mono_break): New JIT icall.
11810
11811         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11812
11813         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11814
11815 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11816
11817         * cpu-*.md: Get rid of unused opcodes.
11818
11819         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11820
11821         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11822         by all platforms.
11823
11824         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11825         define.
11826
11827         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11828         the arch independent trampoline code in mini-trampolines.c.
11829
11830         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11831
11832         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11833
11834         * mini-s390.h: Remove an unused define.
11835         
11836         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11837         the arch independent trampoline code in mini-trampolines.c.
11838
11839         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11840
11841 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11844
11845         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11846
11847         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11848
11849         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11850
11851         * cpu-amd64.md: Use smaller sizes for int opcodes.
11852
11853         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11854
11855         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11856         objects.cs.
11857
11858         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11859         debugging.
11860
11861         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11862         instead of though a pointer to save an indirection when accessing elements of
11863         the array.
11864
11865         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11866         some typos.
11867         (NOT_IMPLEMENTED): New helper macro.
11868         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11869         of a bb.
11870
11871         * *.c: Use the new helper macro.
11872
11873 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11874
11875         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11876
11877 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11878
11879         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11880         stack slots.
11881
11882 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11885         profiling is enabled.
11886         
11887         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11888         the end.
11889         (mono_arch_emit_prolog): Add more first bblock optimizations.
11890
11891         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11892         in order if possible.
11893         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11894         bblock, since the arguments are still in their original registers.
11895
11896         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11897
11898 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11899
11900         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11901         as well.
11902
11903         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11904         offset 0.
11905
11906         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11907
11908         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11909         process async exceptions received while in unmanaged code.
11910
11911         * mini.c (mini_init): Install a callback with the runtime which will be called
11912         when a thread receives an async exception while in unmanaged code.
11913
11914         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11915
11916         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11917
11918 2008-01-16  Wade Berrier  <wberrier@novell.com>
11919
11920         * cpu-g4.md:
11921         * cpu-arm.md:
11922         * cpu-s390x.md:
11923         fix build
11924
11925 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11926
11927         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11928         compilation with sun cc.
11929
11930         * cpu-*.md: Fix the build.
11931
11932         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11933
11934         * mini-amd64.h: Add some comments to the MonoLMF structure.
11935
11936         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11937         
11938         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11939         in the LMF structure if possible. This saves two instructions in the
11940         managed->native wrappers.
11941
11942         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11943
11944 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11945
11946         * generic-sharing.c: New type argument lookup code which uses the
11947         runtime generic context template.
11948
11949 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11950
11951         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11952
11953         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11954         (mono_arch_output_basic_block): Fix localloc implementation.
11955
11956         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11957
11958         * mini-ia64.c (peephole_pass): Fix ia64 build.
11959
11960         * mini-amd64.c (peephole_pass): Fix a warning.
11961         
11962         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11963         at a constant offset from sp/fp.
11964
11965         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11966         instead of obtaining it from *lmf in the managed method case.
11967
11968 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11969
11970         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11971
11972 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11973
11974         * mini.h (MonoInstList): New type.
11975         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11976         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11977         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11978         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11979         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11980         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11981         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11982         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11983         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11984         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11985         MONO_INST_LIST_FOR_EACH_ENTRY,
11986         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11987         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11988         mono_inst_list_first, mono_inst_list_last,
11989         mono_inst_list_next, mono_inst_list_prev): New instruction
11990         list handling interfaces.
11991         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11992         list head 'ins_list'.
11993         (MonoInst): Replace next pointer with list head 'node'.
11994         (MonoCallInst): Make 'out_args' a MonoInstList.
11995         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11996         (MonoCompile): Delete reverse_inst_list and
11997         reverse_inst_list_len.
11998         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11999         mono_arch_lowering_pass, mono_arch_local_regalloc,
12000         mono_arch_output_basic_block, mono_arch_emit_prolog):
12001         Convert to new instruction lists.
12002         (insert_after_ins): Delete.
12003         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12004         instruction lists.
12005         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12006         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12007         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12008         mono_emulate_opcode, mono_emit_load_got_addr,
12009         inline_method, mono_method_to_ir, mono_print_bb_code,
12010         print_dfn, decompose_pass, nullify_basic_block,
12011         replace_out_block_in_code, remove_block_if_useless,
12012         merge_basic_blocks, move_basic_block_to_end,
12013         try_unsigned_compare, optimize_branches, mono_print_code,
12014         mini_select_instructions, remove_critical_edges): Likewise.
12015         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12016         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12017         mono_arch_output_basic_block, mono_arch_emit_prolog):
12018         Likewise.
12019         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12020         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12021         mono_arch_output_basic_block): Likewise.
12022         (inst_list_prepend, insert_after_ins): Delete.
12023         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12024         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12025         instruction lists.
12026         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12027         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12028         mono_arch_emit_prolog): Likewise.
12029         * cfold.c (mono_constant_fold): Likewise.
12030         * liveness.c (visit_bb, mono_analyze_liveness,
12031         optimize_initlocals): Likewise.
12032         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12033         * graph.c (mono_draw_code_cfg): Likewise.
12034         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12035         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12036         mono_ssa_cprop): Likewise.
12037         * abcremoval (get_relations_from_previous_bb, process_block):
12038         Likewise.
12039         * local-propagation (mono_cprop_invalidate_values,
12040         mono_local_cprop_bb): Likewise.
12041         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12042         peephole_pass, mono_arch_output_basic_block,
12043         mono_arch_emit_prolog): Likewise.
12044         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12045         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12046         mono_arch_emit_prolog): Likewise.
12047         (insert_after_ins): Delete.
12048         * aliasing.c (print_code_with_aliasing_information,
12049         mono_build_aliasing_information, mono_aliasing_deadce):
12050         Convert to new instruction lists.
12051         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12052         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12053         mono_arch_local_regalloc, mono_arch_output_basic_block):
12054         Likewise.
12055         (insert_after_ins): Delete.
12056         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12057         peephole_pass, mono_arch_output_basic_block): Convert to
12058         new instruction lists.
12059         * mini-codegen (InstList, inst_list_prepend,
12060         insert_after_ins): Delete.
12061         (insert_before_ins, get_register_force_spilling,
12062         get_register_spilling, free_up_ireg, free_up_reg,
12063         create_copy_ins, create_spilled_store, alloc_int_reg,
12064         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12065         to new instruction lists.
12066         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12067         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12068         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12069         (insert_after_ins): Delete.
12070         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12071         mono_arch_local_regalloc, mono_arch_output_basic_block,
12072         mono_arch_call_opcode): Convert to new instruction lists.
12073         (insert_after_ins): Delete.
12074         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12075         peephole_pass, mono_arch_output_basic_block,
12076         mono_arch_emit_prolog): Convert to new instruction lists.
12077
12078 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12079
12080         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12081
12082         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12083         Fixes #353182.
12084
12085         * Makefile.am (version.h): Make this work with non-bash shells.
12086
12087 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12090
12091 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12092
12093         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12094         the InitializeArray optimization.
12095
12096 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12097
12098         * mini.c driver.c: Don't include os/gc_wrapper.h.
12099
12100 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * mini.c (print_jit_stats): Print GC statistics if available.
12103
12104 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12105
12106         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12107
12108 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12111
12112 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12113
12114         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12115         
12116         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12117
12118         * driver.c (mono_main): Ditto.
12119
12120 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12123
12124         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12125         in the vtable can't be encoded.
12126         (compile_method): Ditto.
12127
12128 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12129
12130         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12131         defined.
12132
12133         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12134         lmf->rbp.
12135
12136         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12137         the top LMF entry belongs to the current method.
12138
12139         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12140
12141 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12144         
12145         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12146
12147         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12148
12149         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12150
12151         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12152
12153         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12154         implementation.
12155
12156         * basic-float.cs: Add an ulong->double cast test.
12157
12158 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * mini.c (mono_method_to_ir): Fix a warning.
12161
12162 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12163
12164         * mini-ops.h: Add OP_SWITCH.
12165
12166         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12167         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12168
12169 2007-12-11  Geoff Norton  <gnorton@novell.com>
12170
12171         * mini-s390x.c: Minor change to the MAX() define to allow
12172         it to compile with other gcc versions.
12173
12174 2007-12-11  Geoff Norton  <gnorton@novell.com>
12175
12176         * cpu-s390x.md:
12177         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12178
12179 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12180
12181         exceptions-arm.c (mono_arch_get_restore_context): Restore
12182         the frame pointer.
12183
12184         exceptions-arm.c (throw_exception): Save the frame pointer.
12185         This is a partial fix for #323747. Only the client side is
12186         fixed.
12187
12188 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12189
12190         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12191         was using an unrelated variable to log the class which
12192         needed the cctor to be called. This was crashing on arm.
12193
12194 2007-12-09  Robert Jordan  <robertj@gmx.net>
12195
12196         * mini-x86.c (mono_arch_emit_epilog):
12197         Consider all kinds of 64-bit types. Fixes #323114.
12198
12199 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12202
12203 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12206
12207 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12208
12209         * mini.c: run type ctor before allocating an object, not only
12210         when running it's constructor method (fixes at least part of bug #342507).
12211
12212 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12213         
12214         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12215         
12216         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12217         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12218         function.
12219
12220         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12221         mono_generic_class_init_trampoline () the same as it is done with the other
12222         trampolines.
12223
12224         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12225         aot-runtime.c aot-compiler.c: Implement AOT support.    
12226
12227 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12228
12229         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12230         build for archs which don't have the vtable trampoline defined
12231         yet.
12232
12233 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12236
12237         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12238
12239         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12240
12241         * tramp-<ARCH>.c: Use the new helper function.
12242
12243 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12244
12245         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12246         trampoline call, which takes a vtable argument.
12247
12248         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12249         OP_TRAMPCALL_VTABLEs like other calls.
12250
12251         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12252         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12253         call.  Implemented a support function which fetches the vtable
12254         from a register set.
12255
12256         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12257         Implemented a generic class init trampoline, using the
12258         OP_TRAMPCALL_VTABLE opcode.
12259
12260         * mini.c: Implemented static field access when sharing generic
12261         code.  This implies initing the class using the new
12262         OP_TRAMPCALL_VTABLE call.
12263
12264 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12265
12266         * mini.c: Don't compile methods with sharing enabled if their
12267         classes are disabled for sharing.
12268
12269 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12272         opcodes. Fixes #346563.
12273
12274         * objects.cs: Add a new test.
12275
12276         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12277
12278         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12279         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12280
12281 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12284
12285 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12288         code stream.
12289
12290 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12291
12292         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12293
12294         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12295         optimization in the AOT case.
12296         
12297 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12298
12299         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12300         
12301         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12302
12303         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12304
12305         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12306
12307         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12308         is created by the inlined delegate ctor.
12309
12310         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12311
12312         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12313
12314 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12315
12316         * cpu-x86.md: Fix the length of ckfinite.
12317
12318 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12319
12320         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12321         
12322         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12323         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12324
12325         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12326
12327         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12328         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12329
12330 2007-11-28  Martin Baulig  <martin@ximian.com>
12331
12332         * mini-x86.c
12333         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12334         after creating the trampoline.
12335
12336 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12337
12338         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12339
12340         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12341         the same version.
12342
12343         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12344         instead of the calling method to help AOT.
12345
12346         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12347
12348 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12351         is defined.
12352
12353 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12354
12355         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12356         
12357         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12358         (encode_method_ref): No need to handle generic method definitions specially.
12359
12360         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12361
12362         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12363         decode_klass_info.
12364
12365         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12366         encode_klass_info.
12367         (compile_method): Enable generic sharing.
12368
12369 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12370
12371         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12372         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12373
12374         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12375         generic code.
12376
12377         * mini-trampolines.c: Fix a warning.
12378
12379         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12380         NEW_PCONST.
12381         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12382         (generic_class_is_reference_type): Remove unused function.
12383
12384         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12385         in the generic vtable trampoline case.
12386
12387         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12388         
12389         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12390         return an AOT method based on a vtable slot.
12391
12392         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12393
12394         * mini.c (mini_get_vtable_trampoline): Export this.
12395
12396 2007-11-22  Martin Baulig  <martin@ximian.com>
12397
12398         * debug-debugger.h
12399         (MonoDebuggerInfo): Move `debugger_version' up.
12400
12401 2007-11-22  Martin Baulig  <martin@ximian.com>
12402
12403         * mini-amd64.c
12404         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12405
12406         * mini-trampolines.c
12407         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12408         after compiling the method.
12409
12410 2007-11-20  Martin Baulig  <martin@ximian.com>
12411
12412         * debug-mini.c
12413         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12414         (mono_debugger_remove_breakpoint): Likewise.
12415         (mono_debugger_check_breakpoints): Likewise.
12416
12417         * debug-debugger.c: Implement the new breakpoint interface here.
12418
12419 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12420
12421         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12422         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12423
12424         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12425
12426 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12429
12430         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12431         mini.c.
12432
12433         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12434         mini.c.
12435
12436         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12437         returning a vtype in a register.
12438
12439         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12440         here from the arch specific code.
12441
12442         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12443         mini.c.
12444
12445         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12446         (mono_arch_emit_prolog): Increment maximum prolog size.
12447
12448         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12449         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12450
12451         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12452         MonoGenericSharingContext.
12453
12454         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12455         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12456
12457 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12458
12459         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12460         which extract fields out of the runtime generic context.  Full
12461         sharing of the NEWARR opcode.
12462
12463 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12464
12465         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12466         --enable-minimal=ssa.
12467
12468 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12469
12470         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12471         mono_marshal_get_delegate_invoke () signature change.
12472
12473 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12474
12475         * mini.c: Removed the shared context in favor of the generic
12476         sharing context.  Allocate the MonoJitInfo structure with room for
12477         the generic sharing context if it's needed.
12478
12479         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12480         domain-internals.h now.
12481
12482         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12483
12484         * generic-sharing.c: Several changes for working without a shared
12485         context and instead operating on open types instead.
12486
12487 2007-11-12  David S. Miller  <davem@davemloft.net>
12488
12489        * inssel-sparc.brg: Fix double instruction emit.
12490
12491 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12494         Get/Set/Address methods.
12495         
12496         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12497         mono_marshal_get_delegate_invoke signature change.
12498
12499 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12500
12501         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12502         This can happens with dynamic methods. Fixes the other bug in #322722.
12503
12504 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12505
12506         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12507         BX call sequence.
12508
12509         * mini-arm.c (arm_patch): Implement patching of BX call
12510         sequence. Fixes one of the bugs in #322722.
12511
12512 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12513
12514        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12515        under Linux.  We only need to flush every 32-byte cache line.    
12516
12517 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12518
12519         * mini.c:
12520         move_basic_block_to_end: Add branches when needed, eventually creating
12521         a new BB.
12522         optimize_branches: added a parameter that tells if it's ok to create
12523         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12524         and avoid calling move_basic_block_to_end when it's not ok.
12525         Fixes bug 318677.
12526
12527 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12528
12529         * mini.c: Abort inlining call to InitializeArray if something
12530         looks wrong.  Let the icall handle it, which now has proper safety
12531         checks.
12532
12533 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12534
12535         * mini.c (mono_spill_call): add support for soft-float.
12536
12537         * mini.c (mono_method_to_ir): add support for soft-float
12538         to inlined functions that return float.
12539
12540         * mini.c (mono_method_to_ir): add support for soft-float
12541         to cee_stsfld opcode on float fields.
12542
12543 2007-11-05  Geoff Norton  <gnorton@novell.com>
12544
12545         * mini-x86.h: Fix the structure access for X86 Leopard.
12546
12547
12548 2007-11-05  Martin Baulig  <martin@ximian.com>
12549
12550         * mini-trampolines.c
12551         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12552         after compiling the method to notify the debugger.
12553
12554 2007-11-05  Martin Baulig  <martin@ximian.com>
12555
12556         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12557
12558 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12559
12560         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12561         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12562
12563 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12564
12565         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12566         native-to-managed wrappers.
12567         
12568 2007-11-01  Geoff Norton  <gnorton@novell.com>
12569
12570         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12571         members.
12572
12573 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12574
12575         * mini.c, mini-x86.c: when getting back from unmanaged code
12576         to managed via a marshaled delegate we also need to set the
12577         right domain.
12578
12579 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12580
12581         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12582         for amd64.
12583
12584 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12585
12586         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12587         let the debugger or other external agents to tell the JIT when
12588         a sw breakpoint has been inserted in the code that the JIT needs
12589         to be able to inspect.
12590
12591 2007-10-31  Martin Baulig  <martin@ximian.com>
12592
12593         * debug-debugger.h
12594         (MonoDebuggerInfo): Remove `runtime_class_init'.
12595
12596 2007-10-30  Martin Baulig  <martin@ximian.com>
12597
12598         * debug-mini.h
12599         (mono_debugger_thread_created): Added `MonoThread *' argument.
12600         (mono_debugger_extended_notification): New public method.
12601         (mono_debugger_trampoline_compiled): New public method.
12602
12603         * debug-mini.c
12604         (MonoDebuggerThreadInfo): Added `thread' and
12605         `extended_notifications' fields.
12606
12607         * debug-debugger.c
12608         (debugger_executable_code_buffer): New static variable.
12609
12610         * debug-debugger.h
12611         (MonoDebuggerInfo): Added `executable_code_buffer',
12612         `executable_code_buffer_size', `breakpoint_info_area',
12613         `breakpoint_table' and `breakpoint_table_size'.
12614
12615 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12616
12617         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12618         that IP  either is an unused value or the vtable pointer. IMT 
12619         calls use vtable + offset now. Reduced by almost half the size
12620         of IMT entries.
12621
12622 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12623
12624         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12625         defines to access param registers. Replace long usage with
12626         gsize as sizeof(long) != sizeof(void*) on Win64.
12627
12628         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12629         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12630         instead of non-existant _GetAddressOfReturnAddress.
12631
12632         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12633         param registers. Save/restore %rdi and %rsi in MonoLMF.
12634
12635         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12636         param registers. Modify (throw_exception) signature to take 
12637         %rdi and %rsi on Win64. 
12638
12639         Code is contributed under MIT/X11 license.
12640
12641 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12642
12643         * helpers.c: unlink debugging output files.
12644
12645 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12646
12647         * mini.c: Move mono_create_ftnptr () to object.c.
12648
12649 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12650
12651         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12652         optional. This function can now be used to disassemble code generated
12653         outside the JIT such as trampolines and IMT thunks.
12654
12655         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12656
12657         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12658         vtable pointer from a ldr instruction.
12659
12660         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12661         new IMT call sequence.
12662
12663         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12664         call sequence for interface invocations.
12665
12666         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12667         for imt support. This function is empty since IMT on ARM requires no
12668         special handling on the IR side.
12669
12670         * mini-arm.c (mono_arch_find_imt_method): added, required for
12671         imt support.
12672
12673         * mini-arm.c (mono_arch_find_this_argument): added, required
12674         for imt support.
12675
12676         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12677         a ldr instruction to load a value stored in the code stream.
12678
12679         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12680         for imt support.
12681
12682
12683 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * mini.c (mini_init): Install the jump trampoline callback.
12686
12687 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12688
12689         * mini-trampolines.c: handle synchronized methods with the common
12690         vtable trampoline (bug #335601).
12691
12692 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12695
12696         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12697         64 bit platforms.
12698
12699         * mini-ia64.h mini-ia64.c: Add support for IMT.
12700
12701         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12702         prolog. Fixes #331958.
12703
12704 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12705
12706         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12707
12708 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12709
12710         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12711         trampoline.
12712
12713 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12714
12715         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12716         trampoline.
12717
12718 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12719
12720         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12721         trampoline.
12722
12723 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12724
12725         * mini-trampolines.c: changed the magic rampoline to understand
12726         the common vtable trampoline method: the method to invoke is
12727         determined by the vtable displacement of the call.
12728
12729 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12730
12731         * mini.c, mini.h: register the common vtable trampoline if the
12732         architecture supports it.
12733
12734 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12735
12736         * cpu-amd64.md: use the correct max length for tls_get.
12737
12738 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12739
12740         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12741         CEE_STELEM_ANY. Fixes #333696.
12742
12743 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12744
12745         * exceptions-x86.c: provide more graceful handling of the case where
12746         we followed a bogus function pointer from managed code (bug #332866).
12747
12748 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12749
12750         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12751         replaces the generic_shared flag and will carry more information
12752         in the future.
12753
12754         * generic-sharing.c: Added mini_type_stack_size() which allows
12755         allows open types if given a generic sharing context.
12756         mini_get_basic_type_from_generic() takes a
12757         MonoGenericSharingContext* instead of a MonoCompile* now.
12758
12759         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12760         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12761         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12762         changes above.  Just passing arguments through to the right
12763         places.
12764
12765 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12766
12767         * mini-arm.c: unify the call emission to emit_code_seq().
12768
12769 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12770
12771         * tramp-arm.c: reduced the trampoline size.
12772
12773 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12774
12775         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12776         variable handling out of arch-specific code.
12777
12778 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12779
12780         * mini-arm.c: implemented fast delegate dispatch.
12781
12782 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12783
12784         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12785         that fp elimination is turned off if the space required by locals is too
12786         big. Fixes #331958.
12787
12788 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12789
12790         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12791         ARM to the new style trampoline.
12792
12793 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12796
12797         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12798
12799 2007-10-09  Martin Baulig  <martin@ximian.com>
12800
12801         * debug-debugger.h
12802         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12803         `field_info_offset_offset'.     
12804
12805 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12806
12807         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12808         removed more internal usage of the r11 register and made it available
12809         to the register allocator.
12810
12811 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12812
12813         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12814         when sharing generics and treat type variables as references.
12815
12816 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12817
12818         * mini-ppc.c: started removing the internal uses of register r11
12819         to eventually allow the register allocator to manage it as an
12820         additional available register.
12821
12822 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12823
12824         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12825
12826 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12827
12828         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12829         specific trampolines as they are not performance critical as a jump
12830         target (maybe align as before only for AOT code?). This saves about
12831         200 KB of native code on x86 for monodevelop startup.
12832
12833 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12834
12835         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12836         monodevelop startup.
12837
12838 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12839
12840         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12841
12842         * mini-sparc.h mini-sparc.c: Implement IMT support.
12843
12844         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12845         its smaller and doesn't clobber sparc_g1.
12846
12847         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12848
12849 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12850
12851         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12852
12853 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12854
12855         * mini-ppc.c: implemented fast delegate invocation.
12856
12857 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12858
12859         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12860
12861 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12862
12863         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12864         code to the new style trampoline in preparation for IMT support.
12865
12866 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12867
12868         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12869         systems already. This also reduces the specific trampiline sizes and
12870         prepares for the use of r12 as the IMT identifier register.
12871
12872 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12873
12874         * mini-mips.h: endianess fix (simplified from a patch by
12875         Thomas Kunze <thommy@tabao.de>, bug #323737).
12876
12877 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12878
12879         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12880         to access ucontext fields and enable netbsd support
12881         (partially from Magnus Henoch <mange@freemail.hu>).
12882
12883 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12884
12885         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12886         use the preprocessor from the CPP env var if it is set.
12887
12888 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12889
12890         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12891         code, before interface_offset gets used.
12892
12893 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12894
12895         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12896         mono_class_setup_vtable () before accessing klass->vtable.
12897
12898 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12899
12900         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12901         hackish.
12902
12903 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12904
12905         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12906         IMT slots (this saves hundreds of KB of memory in programs like
12907         IronPython and Monodevelop).
12908
12909 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12910
12911         * mini.c: print the delegate counter.
12912
12913 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12914
12915         * mini-x86.c: make it easier to enable the debugging code for IMT
12916         slots.
12917
12918 2007-09-28  Martin Baulig  <martin@ximian.com>
12919
12920         * debug-debugger.h
12921         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12922         `mono_method_klass_offset' and `mono_method_token_offset'.
12923
12924 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12925
12926         * mini.c: First generics sharing implementation.  Can only share
12927         in very simple cases.  If sharing doesn't work it falls back to
12928         dedicated compilation.
12929
12930         * mini.h: Flag in MonoCompile to specify whether generic
12931         compilation is shared.  Flags enum for marking which generic inst
12932         of a context is used.  Prototypes for helper functions.
12933
12934         * generic-sharing.c: Helper functions for generic method sharing.
12935
12936         * optflags-def.h: Optimization flag (gshared) for enabling generic
12937         method sharing added.
12938
12939         * Makefile.am: generic-sharing.c added.
12940
12941 2007-09-19 Daniel Nauck <dna@mono-project.de>
12942
12943         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12944
12945 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12946         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12947         fixes bug 325507.
12948
12949 2007-09-19  Martin Baulig  <martin@ximian.com>
12950
12951         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12952         mono_debug_cleanup() is now part of mono_cleanup().
12953
12954 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * driver.c (mono_main): Fix a warning.
12957
12958 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * aot-compiler.c: Optimize various parts when processing large assemblies.
12961         Fixes ##325568.
12962
12963         * mini.c (mono_patch_info_hash): Improve hash function.
12964
12965 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12966
12967         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12968         
12969         Code is contributed under MIT/X11 license.
12970
12971 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * mini.c (mini_init): Fix a leak.
12974
12975         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12976
12977 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12978
12979         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12980
12981 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12982
12983         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12984
12985 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12988         variance tests.
12989
12990         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12991
12992         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12993
12994         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12995
12996         * aot-runtime.c (decode_patch_info): Ditto.
12997
12998 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12999
13000         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13001         static case. Cache delegates in architecture specific code, 
13002         based on number of parameters.
13003         
13004         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13005         in architecture specific code, based on number of parameters.
13006         
13007         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13008         caching happen in architecture specific code now.
13009         
13010         Code is contributed under MIT/X11 license.
13011
13012 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13013
13014         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13015         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13016         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13017
13018         Code is contributed under MIT/X11 license.
13019
13020 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13021         * mini.c: (mono_thread_abort) Fixed bug #82416.
13022
13023 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13024
13025         * mini.: hook the new managed GC allocation feature into the JIT.
13026
13027 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13028
13029         * mini.c: implementation for the new runtime tls opcode.
13030
13031 2007-09-11  Martin Baulig  <martin@ximian.com>
13032
13033         * debug-debugger.h
13034         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13035         `mono_method_inflated_offset'.
13036
13037 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13040         async exceptions into a method.
13041
13042         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13043         purpose of testing whenever the unwinder works at every instruction.
13044
13045 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13046
13047         * mini.c: check accessibility of method used in ldftn (fixes
13048         bug #82635).
13049
13050 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13053
13054         * inssel.brg: Fix a warning.
13055
13056 2007-09-03  Martin Baulig  <martin@ximian.com>
13057
13058         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13059         now takes the `main_method' as argument.
13060
13061 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13064
13065 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13066
13067         * driver.c: include the cil-coff.h header on Windows.
13068         
13069         Code is contributed under MIT/X11 license.
13070
13071 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13072
13073         * mini.c, driver.c: don't include the cil-coff.h header.
13074
13075 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13076
13077         * mini.c: flag places that needs fixes fo soft-float support.
13078
13079 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13080
13081         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13082         endian systems (partially from Dean Jenkins, bug #81924).
13083
13084 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13085
13086         * mini.c (check_linkdemand): Remove embedded reference object in
13087         call to LinkDemandSecurityException.
13088         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13089         with an IntPtr instead of a reference object.
13090
13091 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13092
13093         * mini.c (handle_initobj): Handle alignment properly.
13094
13095         * inssel.brg (mini_emit_memset): Ditto. 
13096
13097         * inssel.brg (mini_emit_memcpy): Ditto. 
13098
13099         * inssel-sparc.brg: Ditto.              
13100
13101         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13102
13103 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13106         exceptions raised in unmanaged code. Fixes part of #82594.
13107
13108 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13109
13110         * mini.c (mono_method_to_ir), declsec.c
13111         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13112
13113 2007-08-22  Martin Baulig  <martin@ximian.com>
13114
13115         * debug-mini.h
13116         (MonoDebuggerThreadInfo): New typedef.
13117         (mono_debugger_thread_table): New global variable.
13118         (mono_debugger_thread_created): New public function.
13119         (mono_debugger_thread_cleanup): New public function.
13120
13121         * debug-debugger.h
13122         (MonoDebuggerInfo):
13123         - removed `get_current_thread' and `lookup_assembly'.
13124         - removed `data_table'.
13125         - added `thread_table'.
13126
13127         * mini.c
13128         (mono_thread_start_cb): Call mono_debugger_thread_created().
13129         (mono_thread_attach_cb): Likewise.
13130         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13131         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13132         initial domain.
13133
13134         * driver.c (mono_main): Move mono_debug_init() up, before calling
13135         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13136
13137 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13138
13139         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13140         together when passing several arguments of type double (gives a small
13141         speedup and saves a few bytes of generated code).
13142
13143 2007-08-20  Jb Evain  <jbevain@novell.com>
13144
13145         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13146
13147 2007-08-20  Jb Evain  <jbevain@novell.com>
13148
13149         * mini.c (mono_method_to_ir): throw MethodAccessException
13150         and FieldAccessException instead of InvalidProgramException.
13151
13152 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13153
13154         * mini.c: CoreCLR security checks.
13155
13156         * mini.h: Removed MonoSecurityMode (moved to
13157         metadata/security-manager.h) and mono_security_mode global var
13158         (replaced by set/get functions in security-manager.h).
13159
13160         * driver.c: Added "core-clr-test" security mode for testing.  Used
13161         set-function for setting security mode.
13162
13163 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13164
13165         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13166         the new jit_info_table.
13167
13168         * driver.c: Test code for the new jit_info_table (enabled by the
13169         define MONO_JIT_INFO_TABLE_TEST).
13170
13171 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13174         detection of call <REG> instruction sequence. Fixes build on freebsd.
13175
13176 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13177
13178         * mini-exceptions.c: Fix a warning.
13179
13180 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13183         stack overflow handling code on amd64 too.
13184
13185         * mini-exceptions.c (mono_setup_altstack): Make this use 
13186         mono_thread_get_stack_bounds ().
13187
13188         * mini-x86.h: Disable sigaltstack on solaris x86.
13189
13190 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13191
13192         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13193
13194 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13195
13196         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13197
13198 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13201
13202         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13203
13204 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13205
13206         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13207         due to alignment.
13208
13209 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13210
13211         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13212         to be emitted (bug #82281).
13213
13214 2007-08-01  Martin Baulig  <martin@ximian.com>
13215
13216         Merged the `debugger-dublin' branch.
13217
13218         * debug-debugger.h (MonoDebuggerInfo):
13219         Removed the `old_*' compatibility entries.
13220         Added `debugger_version' and `data_table'.
13221         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13222         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13223
13224         * debug-mini.c
13225         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13226         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13227         instead of a `gconstpointer'.
13228         (mono_debugger_insert_method_breakpoint): Return a
13229         `MonoDebugMethodAddressList *'.
13230
13231 2007-06-28  Martin Baulig  <martin@ximian.com>
13232
13233         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13234
13235 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13238         __builtin_frame_address () since it is broken on older gcc versions.
13239
13240 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13241
13242         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13243         on the stack overflow handling and made the managed stack overflows
13244         catchable in most cases using soft guard pages.
13245         * exceptions-x86.c: added code to restore the protection in the soft
13246         guard pages at the end of exception handling.
13247
13248 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13251
13252 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13253
13254         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13255         exception handling.
13256
13257 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13258
13259         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13260         signal handling support until it has been ported to the new mechanism.
13261         * mini.c: fixed stack overflow detection and use the new
13262         architecture code  to handle signals on the altstack.
13263
13264 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13265
13266         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13267         stack overflows on the alt stack.
13268
13269 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13270
13271         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13272         stack overflows on the alt stack.
13273
13274 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13275
13276         * exceptions-ppc.c: cleanup preparing for altstack support.
13277
13278 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13279
13280         * exceptions-arm.c: cleanup preparing for altstack support.
13281
13282 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13283
13284         * mini.c (print_jit_stats): Output hazard pointer stats.
13285
13286 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13287
13288         * driver.c, mini.c: Replaced security mode flags with a single
13289         enum variable.
13290
13291 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13292
13293         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13294
13295 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13296
13297         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13298         (which doesn't do anything yet) for activating Core CLR
13299         (Silverlight) security.
13300
13301 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13302
13303         * mini-codegen.c: work around a possible gcc bug on arm.
13304
13305 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13306
13307         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13308         message for platforms that don't support AOT compilation.
13309
13310 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13311
13312         * mini.h, mini.c, driver.c: temporary smcs hack.
13313
13314 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13315
13316         * mini-arm.h, mini-arm.c: arm EABI fixes.
13317
13318 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13319
13320         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13321         case.
13322
13323         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13324         trampolines taking a method argument.
13325
13326         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13327
13328         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13329         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13330
13331         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13332         JIT compilation throws an exception. Fixes #82050.
13333
13334 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13335
13336         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13337         with the MONO_EXCEPTION_ defines.
13338
13339 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13342         #82117.
13343         
13344         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13345         the cause of an assertion.
13346
13347 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13348
13349         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13350         removed.
13351
13352 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13353
13354         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13355         assert. Should fix #82103.
13356
13357 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13360         here too. Fixes #82095.
13361
13362         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13363         addresses.
13364
13365         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13366
13367         * mini-amd64.h: Enable IMT for amd64.
13368         
13369         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13370
13371 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13372
13373         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13374
13375 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13376
13377         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13378         as soon as check_linkdemand sets an exception_type.
13379
13380 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13381
13382         * mini-x86.c: fixed offsets for IMT call sequence.
13383         * mini-x86.h: enable IMT again.
13384
13385 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * trace.c (mono_trace_enter_method): Decode MonoType too.
13388
13389         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13390
13391         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13392
13393         * mini-amd64.c: Add preliminary IMT implementation.
13394         
13395 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13396
13397         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13398         understand the new IMT-base interface invocation (thanks to
13399         Daniel Nauck for the report and the remote debugging session).
13400
13401 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13402
13403         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13404
13405 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13408
13409 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13410
13411         * mini-trampolines.c: implement AOT IMT support.
13412         * mini-x86.h: enable IMT support for wider testing.
13413
13414 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13415
13416         * inssel.brg (emit_imt_argument): Add aot support here.
13417
13418         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13419
13420 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13421
13422         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13423         of the IMT implementation, partially from massi, with my
13424         implementation of the bsearch sequence. Disabled by default until
13425         the AOT code is implemented.
13426
13427 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13428
13429         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13430
13431         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13432
13433 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13434
13435         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13436         arch-independent IMT JIT code from Massimiliano
13437         Mantione (massi@ximian.com) with small cleanups from me.
13438
13439 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13440
13441         * Makefile.am: fix svn invocation to get the svn revision to be
13442         independent of the local language (build fix).
13443
13444 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13445
13446         * mini.c (inline_method): Reset cfg->exception_type if the
13447         inlining is aborted.  Fixes: 82049.
13448
13449 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13450
13451         * mini.c: remove assert from exception handling code when exception_ptr
13452         is not set.
13453
13454 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * mini.c (mono_codegen): Add an assert.
13457
13458         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13459         enter and leave code.
13460         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13461
13462 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13463
13464         * mini-ppc.c: fixed memory corruption for localloc(0)
13465         (bug #81852).
13466
13467 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13468         
13469         * mini.c: Fix warnings.
13470
13471 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13472
13473         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13474         to emit better double->int conversions.
13475
13476 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13477
13478         * mini.c: the provided Min/Max optimizations are valid for unisgned
13479         ints.
13480
13481 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13482
13483         * 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
13484
13485 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13486
13487         * mini.c (mono_running_on_valgrind): Add support for reporting the
13488         method and  its boundaries to valgrind.
13489
13490 2007-06-28  Martin Baulig  <martin@ximian.com>
13491
13492         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13493
13494 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13497
13498         * generic.2.cs: Add new test case.
13499
13500 2007-06-25  Martin Baulig  <martin@ximian.com>
13501
13502         Merged the `debugger-dublin' branch.
13503
13504         * debug-mini.c
13505         (mono_debugger_insert_method_breakpoint): New public method.
13506         (mono_debugger_remove_method_breakpoint): Likewise.
13507         (mono_debugger_check_breakpoints): New static method.
13508         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13509
13510         * debug-debugger.h (MonoDebuggerInfo):
13511         Renamed (to keep backward compatibility in the vtable):
13512         `insert_breakpoint' -> `old_insert_breakpoint'.
13513         `remove_breakpoint' -> `old_remove_breakpoint'.
13514         `create_string' -> `old_create_string'.
13515         `lookup_class' -> `old_lookup_class'.
13516         `lookup_type' -> removed; changed into a dummy field.
13517         `lookup_assembly' -> `old_lookup_assembly'.
13518         Added (same functionality, but different signature):
13519         `create_string', `lookup_class', `lookup_assembly'
13520         Added new:
13521         `get_method_addr_or_bpt', `remove_method_breakpoint',
13522         `runtime_class_init'.
13523
13524         * debug-debugger.c: Merged the `debugger-dublin' branch.
13525
13526 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13527
13528         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13529         well.
13530         (peephole_pass): Likewise.
13531
13532 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13533
13534         * driver.c: hopefully make setaffinity work also for ancient
13535         versions of linux.
13536
13537 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13538
13539         * driver.c : win32 build fix.
13540
13541 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13542
13543         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13544         processor if it is set.
13545
13546 2007-06-21  Martin Baulig  <martin@ximian.com>
13547
13548         * debug-mini.h: New file.
13549
13550         * debug-mini.c
13551         (mono_debugger_insert_breakpoint_full): Moved here from
13552         ../metadata/mono-debug-debugger.c.
13553         (mono_debugger_remove_breakpoint): Likewise.
13554         (mono_debugger_breakpoint_callback): Likewise.
13555
13556 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13557
13558         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13559         changes in MonoGenericClass.
13560
13561 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13564
13565 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13566
13567         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13568         removal of MonoGenericMethod.
13569
13570 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13571
13572         * mini-exceptions.c: hooks for the exception events profiling API.
13573
13574 2007-06-14  Randolph Chung  <tausq@debian.org>
13575
13576         * Makefile.ma: Add hppa target.
13577         * mini-arch.h: Include mini-hppa.h
13578         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13579         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13580         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13581
13582 2007-06-14  Randolph Chung  <tausq@debian.org>
13583
13584         * inssel.brg: Add rules for "chained" compare-branch operations so that
13585         a single compare op can affect multiple branches.  Adjust cost for
13586         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13587         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13588         cost for some rules so that they can more easily be overridden by
13589         per-arch rules (with fixes from lupus).
13590         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13591
13592 2007-06-13  Randolph Chung  <tausq@debian.org>
13593
13594         * mini-ops.h: Reorder branch ops so that they match the order of the
13595         corresponding CEE_* ops.  The code expects them this way.
13596         Add new ops for HPPA target.
13597         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13598
13599 2007-06-13  Randolph Chung  <tausq@debian.org>
13600
13601         * mini-exceptions.c: Handle cases where the stack grows towards
13602         larger addresses.
13603         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13604
13605 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13606
13607         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13608         counter.
13609         * driver.c: explain where a non-matching corlib is found.
13610
13611 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13612
13613         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13614
13615 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13616
13617         * mini-exceptions.c: Generate a method profile leave event during
13618         an exception to ensure that the profiler gets notified.
13619
13620 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13621
13622         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13623         branch.
13624
13625         * cpu-amd64.md: Add long_and/or/xor opcodes.
13626
13627 2007-06-06  Wade Berrier  <wberrier@novell.com>
13628
13629         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13630         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13631         length of instruction shr_imm (expected 8, got 10)
13632
13633 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13634
13635         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13636
13637 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13638
13639         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13640         MonoInternalHashTable again (fixed bug in the internal hash table
13641         code).
13642
13643 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13644
13645         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13646         Have to figure out what makes it crash the SWF regression.
13647
13648 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13649
13650         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13651
13652 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13653
13654         * mini.c: optimize out the type check when storing null in a
13655         reference array.
13656
13657 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13658
13659         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13660         MonoInternalHashTable.
13661
13662 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13663
13664         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13665         signed integer methods.
13666
13667 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13668
13669         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13670         permanently since the current approach doesn't work.
13671
13672 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13673
13674         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13675         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13676
13677 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13678
13679         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13680         the sreg2==rdx case.
13681         
13682         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13683         account if it contains a rex prefix.
13684         (peephole_pass): Handle OP_FMOVE as well.
13685
13686 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13689         as it causes regressions.
13690
13691 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13692
13693         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13694         static case as well.
13695
13696         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13697
13698         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13699         (mono_arch_get_this_arg_from_call): Ditto.
13700
13701         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13702
13703         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13704         invoke_impl field.
13705
13706         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13707         (mono_arch_get_this_arg_from_call): Ditto.
13708
13709         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13710         
13711         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13712         try to create optimized invoke code and use that for further invocations. 
13713         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13714
13715         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13716
13717 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13718
13719         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13720         sealed classes or methods.
13721         *devirtualization.cs: tests for the new optimization
13722
13723 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13724
13725         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13726         by the update_volatile () function.
13727
13728 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13731         require it.
13732
13733         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13734
13735 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13736
13737         * mini.c: Add configure checks for header files.
13738         * mini-x86.c: Add configure checks for header files.
13739         * trace.c: Add configure checks for header files.
13740         * aot-runtime.c: Add configure checks for header files.
13741         * aot-compiler.c: Add configure checks for header files.
13742         * driver.c: Add configure checks for header files.
13743         * mini-codegen.c: Add configure checks for header files.
13744         
13745         Code is contributed under MIT/X11 license.
13746
13747 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13750         icompare_imm -128 + op_iclt. Fixes #81703.
13751
13752 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13755
13756 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13757
13758         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13759         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13760         so that all isinst checks now use "interface_bitmap".
13761
13762 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * cpu-amd64.md (jmp): Fix a warning.
13765
13766         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13767
13768         * basic.cs: Add new regression test.
13769
13770         * basic.cs: Remove test which is now in basic-long.cs.
13771
13772         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13773
13774         * basic-long.cs: Add new test.
13775         
13776 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13777
13778         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13779
13780 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13781
13782         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13783
13784         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13785         places.
13786         
13787         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13788         throwing code a bit.
13789
13790         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13791         the exception throwing code a bit.
13792
13793         * mini-x86.c (get_call_info): Allocate result from a mempool.
13794
13795 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13796
13797         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13798
13799         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13800
13801         * mini.h (MonoCompile): Add 'token_info_hash' field.
13802
13803         * mini.c: Save token->method associations during compilation so the AOT 
13804         compiler can use it.
13805         
13806         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13807         which reference generic classes and methods.
13808
13809 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13810
13811         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13812
13813         * aot-compiler.c (compile_method): Fix a typo in a comment.
13814
13815         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13816
13817         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13818         everything generic.
13819
13820         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13821
13822 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13823
13824         * mini.h (MonoCompile): Add 'args' field.
13825
13826         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13827         into cfg->args.
13828
13829         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13830
13831 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13834
13835         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13836
13837         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13838         opcodes for some opcodes.
13839
13840         * mini.h *.brg *.c: Use the new opcodes.
13841
13842 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13843
13844         * mini.h: Bumped aot revision.
13845
13846         * inssel.brg: modified code generation of type checks for interfaces
13847         to use the new "MonoClass.interface_bitmap" instead of the old
13848         "MonoClass.interface_offsets".
13849
13850 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13851
13852         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13853
13854 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13857         64 bit platforms.
13858
13859 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13860
13861         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13862
13863 2007-04-27  Wade Berrier  <wberrier@novell.com>
13864
13865         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13866         mini.h) to fix build.
13867
13868 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13869
13870         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13871         
13872         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13873         causes the corlib unit tests to fail.
13874
13875 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13876
13877         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13878
13879         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13880
13881         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13882         opcodes to the comparison relations.
13883
13884         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13885         opcodes to their types.
13886         
13887         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13888
13889         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13890         it in cfg->arch.cinfo.
13891
13892         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13893
13894         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13895         cfg->cil_offset_to_bb.
13896
13897 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13898
13899         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13900         created becase of initlocals.
13901
13902 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13905         Sergey Tikhonov <tsv@solvo.ru>.
13906
13907 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13908
13909         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13910
13911 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * cpu-s390.md (break): Correct the length of break instruction.
13914
13915 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13916
13917         * mini.c: fix a couple of soft-float issues and comments.
13918
13919 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13920
13921         * trace.c (is_filenamechar): - is also a filename char.
13922
13923 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13924
13925         * mini-s390.c: Correct checking for enum type in return value processing.
13926
13927 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13928
13929         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13930         (version.h): Makefile is in the build directory.
13931
13932 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13933
13934         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13935
13936 2007-04-11  Martin Baulig  <martin@ximian.com>
13937
13938         * mini.c (can_access_member): Fix handling of generic classes;
13939         fixes #81259.
13940
13941 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13942
13943         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13944
13945 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13948
13949 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13950
13951         * mini-codegen.c: make sure the right spill amount is
13952         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13953
13954 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13955
13956         * mini-ppc.c: fixes for the fp_branch_nan test.
13957
13958 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13959
13960         * basic.cs: Comment out new test which still fails on ia64.
13961
13962 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13963
13964         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13965
13966 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13967
13968         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13969
13970 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13973         on 64 bit machines. Fixes part of #80738.
13974
13975         * basic.cs: Add regression test.
13976
13977 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13978
13979         * inssel.brg basic.cs: Revert previous change to fix build.
13980
13981         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13982         platforms.
13983         
13984         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13985
13986         * basic.cs: Add new regression test.
13987
13988 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13991         many arguments.
13992
13993 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13994
13995         * cpu-s390x.md: Correct length of break instruction.
13996
13997 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13998
13999         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14000         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14001
14002 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14003
14004         * *.c: Begin WIN64 port.
14005         * mini.c:  Use correct register in profiler.
14006         * mini-amd64.c: No inline assembly on Win64.
14007         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14008         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14009         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14010         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14011         mono_arch_ip_from_context for Win64.
14012         
14013         Contributed under MIT/X11 license.
14014
14015 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * exceptions-amd64.c (seh_handler): Ditto.
14018
14019         * exceptions-x86.c (seh_handler): Fix a memory leak.
14020
14021 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14022
14023         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14024         mini-s390x.c: fixed peephole optimizations to deal
14025         correctly with 1 and 2 byte reload avoidance.
14026
14027 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14028
14029         * cpu-s390.md, cpu-s390x.md: update localloc length.
14030
14031 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14032
14033         * cpu-g4.md: added missing descriptions.
14034
14035 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14036
14037         *  Makefile.am: Add support so the tail tests are not executed on
14038         PowerPC as that is a known limitation of the PowerPC port.
14039
14040 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14041
14042         * runmdesc.bat:  Move to msvc directory.
14043         
14044 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14045
14046         * runmdesc.bat:  Run executable that was produced by the current
14047         target and sent via an argument.
14048         
14049 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14050
14051         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14052         #81102.
14053
14054         * generics.2.cs: Add regression test.
14055
14056 2007-03-09  Wade berrier  <wberrier@novell.com>
14057
14058         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14059
14060 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14061
14062         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14063         AOT code depends on this.
14064
14065 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14066
14067         * mini.c: more precise tracking of types in the eval stack
14068         (part of fix for bug #81044).
14069
14070 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14073
14074         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14075
14076 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14079
14080         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14081
14082 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14083
14084         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14085         a pointer on 64 bit systems. Fixes #80190.
14086
14087         * iltests.il: Add new regression test.
14088
14089 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14090
14091         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14092
14093 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14094
14095         * trace.c: Remove an erroneous alignemnt check when tracing.
14096           Fixes --trace on OSX86.
14097
14098 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14099
14100         * mini-$(arch).h: initialize SP in context for all the archs.
14101
14102 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14103
14104         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14105         regressions in the thread tests.
14106
14107 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14108
14109         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14110         - fixed implementation of LOCALLOC opcode
14111         - implemented non-un compare for floats
14112         - code cleanup
14113         - implementation of FDIV and CKFINITE opcodes
14114         - fixes for latest mono updates
14115         - additional arch opcodes
14116
14117 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14118
14119         * Makefile.am: simplify and merge rules for cross-compilation.
14120
14121 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14122
14123         * local-propagation.c: Actually *apply* the fix for bug 80591...
14124
14125 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14126
14127         * mini-exceptions.c: backuot part of the last change
14128         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14129
14130 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14131         * inssel.brg: Fix bug 59286.
14132
14133
14134 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14135
14136         * mini-exceptions.c: patch from Zoltan to correctly check for
14137         stack boundaries (using the stack register, not the frame register),
14138         fixes bugs #80724, #79717.
14139
14140 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14141
14142         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14143         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14144
14145         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14146         presence of frame pointer elimination.
14147
14148 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14149         
14150         * mini-x86.h: NetBSD UCONTEX_REG defines.
14151
14152 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * inssel-amd64.brg: Fix amd64 build.
14155
14156 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14157
14158         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14159         on amd64.
14160
14161 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14164         ends.
14165
14166         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14167
14168 2007-01-30 Mark Mason <mason@broadcom.com>
14169
14170            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14171            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14172            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14173            beginning support for CEE_JMP [not quite working yet]
14174            * tramp-mips.c: LMF handling now works
14175         
14176 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14179
14180         * mini.h (NULLIFY_INS): New macro.
14181
14182 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14183
14184         * mini.c: statistical profiler fix for windows, patch
14185         from Tor Lillqvist (tml@novell.com).
14186
14187 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14188         * local-propagation.c: Fix bug 80591.
14189
14190 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14191
14192         * Makefile.am: put back the --export-dynamic option as with
14193         the previous gmodule flags (thanks to Robert Jordan).
14194
14195 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14198
14199         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14200         simplify and speed up the local register allocator. Also rename some fields
14201         like iassign->vassign.
14202         
14203         * regalloc.c: Remove some functions which are no longer used since their
14204         inlined version is in mini-codegen.c.
14205         
14206         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14207
14208         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14209
14210 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14211
14212         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14213         narrowing. Fixes #80622.
14214
14215         * iltests.il: Add new regresssion test. 
14216
14217 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14218
14219         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14220         debug-debugger.c, debug-debugger.h: warning fixes.
14221         * driver.c: updated copyright year and made it fit in one line.
14222
14223 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14224
14225         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14226
14227 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14230
14231         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14232
14233         * iltests.il: Add new test for bug #80507.
14234
14235 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14236
14237         * mini-arm.h: use soft-float also on vfp for now.
14238
14239 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14240
14241         * mini.c: fix some more soft-float issues.
14242
14243 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14244
14245         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14246
14247 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14248         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14249         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14250         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14251
14252 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14253
14254         * mini-arm.c: typo fix.
14255
14256 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14257
14258         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14259
14260 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14261
14262         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14263         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14264
14265         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14266
14267         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14268
14269         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14270         
14271         * inssel.brg: Fix a warning.
14272
14273         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14274
14275         * abcremoval.c ssa.c ssapre.c: Update after this change.
14276         
14277         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14278
14279         * dominators.c (df_set): Use mono_bitset_union_fast.    
14280
14281 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14282
14283         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14284         mini-codegen.c: reduce relocations and memory usage for the cpu
14285         description.
14286
14287 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14288
14289         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14290
14291         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14292         to reduce their size.
14293
14294 2007-01-19 Mark Mason <mason@broadcom.com>
14295
14296         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14297         * mini-mips.c: more configuration macros, support long conditional branches, additional
14298         asserts, fix epilog instrumentation.
14299         * mini-mips.h: use standard stack walk
14300         * cpu-mips.md: increase size of div, rem and conditional branches
14301         
14302 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14303
14304         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14305         to cpu spec data.
14306
14307 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14310         (compile_method): Ditto.
14311
14312         * aot-runtime.c (decode_klass_info): Ditto.
14313
14314         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14315         needed by the code generated by inssel.brg. Also fix a warning.
14316
14317 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14318
14319         * mini.c: deal with enums that become genericinsts by
14320         being nested in a generic class (bug #79956).
14321
14322 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14323
14324         * mini.c: match the generic definition to check for
14325         private access with generic types (bug #78431).
14326
14327 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14328
14329         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14330         to make life easier for people cross-compiling that insist on not
14331         using scratchbox.
14332
14333 2007-01-17 Mark Mason <mason@broadcom.com>
14334
14335         * inssel-long.brg: patch to deal with mips missing flags
14336         * inssel-long32-mips.brg: implement overflow checks
14337         * insset-mips.brg: implement overflow checks
14338         * mini-mips.h: implement conditional exception handling
14339         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14340           Remove unused code, minor cleanups.
14341         * exceptions-mips.c: minor cleanups
14342         * mini-ops.h: add mips conditional exception ops
14343         * cpu-mips.md: add mips conditional exception ops
14344
14345         
14346 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14347
14348         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14349         to deal with mips missing of flags.
14350
14351 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14352
14353         * exceptions-ppc.c: execute fault handlers.
14354
14355 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14356
14357         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14358
14359 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14360
14361         * mini.c: handle also floating point values in initialize_array.
14362
14363 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14364
14365         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14366         array initialization and make it conditional on the intrins option.
14367
14368 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14369
14370         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14371         relocations and put the patch info names close to the enum definition.
14372
14373 2007-01-15 Mark Mason <mason@broadcom.com>
14374
14375         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14376
14377 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14380
14381 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14382
14383         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14384
14385 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14386
14387         * Makefile.am: distribute the mips sources.
14388
14389 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14390
14391         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14392         directly.
14393
14394 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14395
14396         * cpu-x86.md: back out for now as this triggers other regressions.
14397
14398 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14399
14400         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14401         to eax:edx, so ecx can't get allocated to them (bug #80489).
14402
14403 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14404
14405         * mini.c, mini-exceptions.c: enabled running fault handlers
14406         (bug #80469).
14407
14408 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14409
14410         * driver.c: If nothing fail, do not use the string "failed",
14411         because it makes it very annoying to view test result logs on the
14412         web. 
14413
14414 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14415
14416         * debug-debugger.c (mono_debugger_main): Rename "main" to
14417         "main_method" to prevent a warning.
14418
14419         Remove a warning for unused field.
14420
14421 2006-12-28  Martin Baulig  <martin@ximian.com>
14422
14423         * debug-debugger.c
14424         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14425
14426 2006-12-22  Martin Baulig  <martin@ximian.com>
14427
14428         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14429         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14430         seperate `.mdb_debug_info' section, so we can access it from the
14431         debugger even if the binary is stripped.
14432
14433         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14434         from the `.mdb_debug_info' here to prevent the linker from
14435         removing that section.
14436
14437         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14438         mdb-debug-info64.s.
14439
14440 2006-12-19  Robert Jordan  <robertj@gmx.net>
14441
14442         * mini-x86: enable the code to return small structures in
14443         registers for FreeBSD as well. Fixes bug #80278.
14444         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14445
14446 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14447
14448         * mini-x86.c: align the stack when calling the profiler
14449         function instrumenting the prolog (on OSX).
14450
14451 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14452
14453         * mini.c: emit a break opcode where Debugger.Break () is called.
14454
14455 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14456
14457         * mini.c (mono_method_to_ir): Provide useful information on this
14458         assert, to prevent others from debugging like I did.
14459
14460 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14461
14462         * mini.c: enable code which was incorrectly commented
14463         (bug #80235).
14464
14465 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14466
14467         * mini-x86.c: enable on OSX, too, the code to return small
14468         structures in registers.
14469
14470 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14471
14472         * mini-x86.c: remove the use of the dynamic code manager here, too.
14473
14474 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14475
14476         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14477         mono_debugger_create_notification_function() to use
14478         mono_global_codeman_reserve () instead of a dynamic code manager.
14479
14480 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14481
14482         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14483         ves_array_element_address() jit icall and use a generated
14484         managed method instead (which is about 4 times faster for a rank 3
14485         array access).
14486
14487 2006-11-29  Mark Mason  <mason@broadcom.com>
14488
14489         * basic-calls.cs: additional tests for passing
14490         structures as function arguments.
14491
14492 2006-11-29  Mark Mason  <mason@broadcom.com>
14493
14494         * mini-mips.h: disable custom exception handling
14495         * mini-mips.c: throw/rethrow should use jalr to call
14496         exception stubs.  Fixed bug with passing structures
14497         by value. More support for tracing floating point
14498         functions.
14499
14500 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14501
14502         * mini.c: fixed typo in the soft-float ldind.r4 handling
14503         (bug #80086).
14504
14505 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14506
14507         * mini.c, mini.h, driver.c: added --runtime command line
14508         option to select a different runtime than the autodetected one.
14509         * jit.h: added API for embedders to initialize with a specific
14510         runtime version.
14511
14512 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14513
14514         * mini.c: handle also boxing of r4 values (bug #80024).
14515
14516 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14517
14518         * mini-ppc.c: force indirect calls until we reserve
14519         enough address space for all the generated code.
14520
14521 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14522
14523         * exceptions-arm.c: workaround bugs in the libc definition
14524         of struct ucontext.
14525
14526 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14527
14528         * inssel.brg: fixes from me and Mark Mason.
14529
14530 2006-11-23  Dick Porter  <dick@ximian.com>
14531
14532         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14533         semaphore display now we've fixed the initial value
14534
14535 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14536
14537         * inssel.brg: partially revert the last change to fix the build.
14538
14539 2006-11-21  Mark Mason  <mason@broadcom.com>
14540
14541         * inssel.brg: Add and use compare-and-branch macros to support
14542         architectures that do not have condition code registers (ie. MIPS).
14543         * *-mips.{c,brg,md}: Fix copyright statements
14544
14545 2006-11-20  Mark Mason  <mason@broadcom.com>
14546
14547         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14548         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14549         * mini.h: Added declaration for mono_print_ins()
14550         * mini-codegen.c: added ins_spec initializer for MIPS
14551         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14552         vreg to be virtual and hreg to be non-virtual.
14553         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14554         is not yet working/implemented correctly.
14555         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14556         non-static, fixup calls to print_ins() from other parts in the file.
14557
14558 2006-11-20  Mark Mason  <mason@broadcom.com>
14559
14560         * basic-calls.cs: added tests for passing structures as arguments
14561         to calls.
14562
14563 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14564
14565         * inssel-long32.brg: optimize signed division by power of two.
14566
14567 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14568
14569         * mini-arm.c: added support for interworking with thumb code
14570         (mono must be still be built using the ARM instruction encoding).
14571
14572 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14573
14574         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14575         verifier has different rules for it.   Fixes a few verifier issues
14576         in the test suite.
14577
14578         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14579         at the end, so people know what happened.
14580
14581 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14582
14583         * brach-opts.c: in optimize_exception_target() make sure we
14584         are in a catch clause (fixes bug #79871).
14585
14586 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14587
14588         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14589         more soft-float support fixes.
14590
14591 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14592
14593         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14594         that are passed half on the stack and half in registers.
14595
14596 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14599         more mips integration work from Mark E Mason 
14600         <mark.e.mason@broadcom.com>.
14601
14602 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14603
14604         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14605         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14606         tramp-mips.c: added sources for the mips port, not
14607         integrated in the build yet. Contributed by
14608         Mark E Mason <mark.e.mason@broadcom.com>.
14609
14610 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14611
14612         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14613
14614 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14615
14616         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14617         put the soft-float rules in its own file since it seems to
14618         break s390 compilation.
14619
14620 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14621
14622         * mini-arm.c: fixed wrnings.
14623
14624 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14627         inssel-arm.brg: ARM support for soft-float.
14628
14629 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14632         loads and stores of 32 bit fp values.
14633
14634 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14635
14636         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14637
14638         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14639         works. Fixes #79852 and #79463.
14640
14641 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14642
14643         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14644         more soft-float support WIP and fixes.
14645
14646 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-arm.c: some VFP updates.
14649
14650 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini-exceptions.c: 0 is a valid local var offset in some
14653         architectures, don't assert (bug #78508).
14654
14655 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14656
14657         * exceptions-arm.c: fixed off by one error in stack walk code.
14658
14659 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14660
14661         * mini.h, mini.c: more precise tracking of type load exceptions.
14662
14663 2006-11-03  Robert Jordan  <robertj@gmx.net>
14664
14665         * Makefile.am: [WIN32] Add monow.exe target.
14666         * driver.c: [WIN32] Don't detach the console when debugging.
14667         Fixes bug #79797.
14668         
14669 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14670
14671         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14672
14673 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14676
14677         * driver.c (mini_regression): Fix --regression with AOT.
14678
14679         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14680
14681 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14682
14683         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14684
14685         * mini-sparc.h: Don't use sigaction on sparc/linux.
14686
14687         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14688
14689         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14690
14691         * mini-exceptions.c: Add proper include files for getpid ().
14692
14693 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14696         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14697         method.
14698
14699         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14700         name cache to reduce its size.
14701
14702         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14703
14704 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14707         the mono_lmf TLS variable.
14708
14709         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14710         trampoline lmf frames.  
14711
14712         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14713
14714 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14715
14716         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14717         the mono_lmf TLS variable.
14718
14719         * mini-exceptions.c: Access the LMF structure through accessors.
14720
14721         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14722         variable instead of in jit_tls->lmf.
14723
14724         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14725         
14726         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14727         trampoline lmf frames.
14728
14729         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14730
14731 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14732
14733        * mini.c trace.c mini-x86.c: Revert these too.
14734         
14735        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14736        signature change.
14737
14738 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14739
14740         * genmdesc.c: removed now dead code.
14741
14742 2006-10-09  Robert Jordan <robertj@gmx.net>
14743
14744         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14745
14746 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14747
14748         * mini.h: do not leave gaps in the opcode values.
14749
14750 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14751
14752         * jit-icalls.h: flag functions as internal here, too.
14753
14754 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14755
14756         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14757         functions with the internal attribute.
14758
14759 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14760
14761         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14762
14763 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14764
14765         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14766         for soft-float.
14767
14768 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14769
14770         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14771         tail calls as on other platforms.
14772
14773         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14774
14775         * iltests.il: Add a few tailcall tests.
14776
14777 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14778
14779         * driver.c: fix loop for old compilers (bug #79521).
14780
14781 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14782
14783         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14784
14785         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14786
14787         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14788         metadata without any code.
14789
14790         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14791         more precise debugging information using gdb.
14792
14793 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * inssel-ia64.brg: Make the helper methods static.
14796
14797 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14798
14799         * inssel-x86.brg: make the helper methods static.
14800
14801 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14802
14803         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14804
14805 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14806
14807         * mini.c: updates for monoburg changes.
14808         * inssel.brg: make a few helper functions static as they should.
14809
14810 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14811
14812         * Makefile.am: Move mini-codegen.c to common_sources.
14813
14814 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14815
14816         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14817         instructions.
14818         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14819         mini-ppc.h: port to use the common local register allocator.
14820
14821 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14822
14823         * mini.h: Remove the comment too then.
14824
14825 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14826
14827         * mini.h: put back backend.data which is to be used shortly and
14828         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14829         pointers on 4 byte boundaries it'd have much bigger issues running
14830         and you can ifdef it out anyway.
14831
14832 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14835         MonoInst size by 4 bytes on 64 bit machines.
14836
14837 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14838
14839         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14840         replacement with more meaningful field names. Arch maintainers, please
14841         check the assigned names are good enough for your arch.
14842
14843 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14844
14845         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14846         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14847
14848 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14849
14850         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14851         relocations and memory requirements, put the optimization flags
14852         definitions in their own file.
14853
14854 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14855
14856         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14857
14858         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14859
14860 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14861
14862         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14863
14864 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14865
14866         * inssel.brg: use the correct function to get the size of an item
14867         in an array, given an element class.
14868         * aot-compiler.c: do not access class->class_size directly.
14869
14870 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini.h, debug-mini.c: added a debugging function to print
14873         info about local variables and arguments in a jitted method.
14874
14875 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14876
14877         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14878
14879         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14880
14881 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14882
14883         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14884         inner and outer loops when passing vtypes.
14885
14886 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14887
14888         * mini-ppc.c: take into account the cpu errata for cache flushing
14889         which caused some random errors (bug #79381).
14890
14891 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14892
14893         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14894         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14895
14896 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14897
14898         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14899         loaded.
14900
14901         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14902         freebsd ports tree.
14903
14904         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14905         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14906
14907         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14908         displacement.
14909
14910 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14911
14912         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14913
14914 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14917         macro does not have to be changed during debugging.
14918
14919         * 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>.
14920
14921         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14922
14923         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14924         
14925         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14926         MONO_ARCH_NO_EMULATE_MUL is defined.
14927
14928         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14929
14930         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14931
14932         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14933
14934         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14935         
14936 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14937
14938         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14939         stuff to mini-exceptions.c where it is used.
14940
14941         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14942         setup code, the real one is in mini-exceptions.c.
14943
14944         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14945         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14946         some changes from the freebsd ports tree.
14947
14948         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14949         constants.
14950         
14951         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14952
14953 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14954
14955         * mini.c: on Linux, check for /proc to be mounted
14956         (bug# 79351, novell bug#201204).
14957
14958 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini.c: handle cases where pthread_attr_getstack() behaves
14961         incorrectly (bug #78096).
14962
14963 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14964
14965         * mini-arm.c: support larger stack frames (bug #79272).
14966
14967 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14968
14969         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14970
14971         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14972         tokens.
14973
14974         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14975         mono_class_from_name () to find a class from its name.
14976
14977         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14978
14979 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14980
14981         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14982
14983 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14984
14985         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14986
14987 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14990         callinfo->trampoline.
14991
14992         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14993         fixes #79271.
14994         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14995         future.
14996
14997 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15000
15001 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15004         stats.method_trampolines, it is already done by the generic trampoline code.
15005
15006         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15007         
15008 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15009
15010         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15011
15012         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15013
15014         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15015
15016         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15017         
15018         * mini.c (print_jit_stats): Print new stats.
15019
15020         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15021
15022 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15023
15024         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15025         Address on two dimensional arrays. Fixes #78729.
15026
15027         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15028
15029         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15030         a method.
15031
15032         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15033
15034         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15035         #79130.
15036         
15037         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15038         a race condition.
15039         (mini_get_ldelema_ins): Ditto.
15040
15041 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15042
15043         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15044         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15045         Fixes #79213.
15046
15047 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15048
15049         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15050         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15051
15052         * exceptions-s390x.c: Cosmetic change.
15053
15054         * tramp-s390.c: Fix warning.
15055
15056         * cpu-s390.md: Correct length of mul_imm.
15057
15058 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15059
15060         * aot-compiler.c: added binary writer with ELF backend
15061         implementation (only on Linux/x86 for now).
15062
15063 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15064
15065         * Makefile.am: Don't run net 2.0 AOT tests.
15066
15067         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15068         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15069
15070         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15071
15072 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15073
15074         * aot-compiler.c: simplified and refactored the asm-writing code
15075         to allow different backends.
15076
15077 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15078
15079         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15080
15081         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15082         little. Share patches of type TYPE_FROM_HANDLE as well.
15083
15084         * mini.c (mono_patch_info_equal): New helper function.
15085         (mono_patch_info_hash): Ditto.
15086
15087         * aot-compiler.c (emit_method_code): Fix s390 build.
15088
15089         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15090         is not handled because it is stored as a flag and not as a type ctor. Fixes
15091         #79016.
15092
15093 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * aot-compiler.c: Fix computation of GOT slot statistics.
15096         
15097         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15098         Also remove support for not PIC AOT.
15099
15100         * mini.h: Bump AOT file format version.
15101
15102         * objects.cs: Add a test for #78990.
15103
15104         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15105         (peter.dettman@iinet.net.au). Fixes #79087.
15106
15107         * basic-long.cs: Add a test for the above.
15108
15109 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15112         
15113         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15114         code somewhat.
15115
15116 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15117
15118         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15119         exceptions.
15120
15121 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15122
15123         * mini.c: Don't verify COM proxy invoke calls
15124         
15125
15126 2006-08-10  Dick Porter  <dick@ximian.com>
15127
15128         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15129         which process is holding semaphores locked.
15130
15131 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15132
15133         * mini-ia64.c mini-amd64.c: Fix #79027.
15134
15135         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15136
15137         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15138
15139         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15140         implicit arguments in a vararg call. Fixes #79027.
15141
15142 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15143
15144         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15145         (mono_get_array_new_va_signature): Ditto.
15146
15147 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15148
15149         * aot-runtime.c: Call init_plt lazily.
15150
15151         * inssel-long.brg: Fix unsigned long->int conversion.
15152
15153         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15154
15155         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15156         that most data is now in the .rss/.data section.
15157
15158 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15159
15160         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15161
15162         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15163
15164         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15165
15166         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15167
15168         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15169         virtual call. Fixes #79010.
15170
15171         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15172         and use the result as the this argument in the real call.
15173
15174         * generics.2.cs: Add a new test for #79010.
15175         
15176 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15177
15178         * mini-x86.c: Fix a warning.
15179
15180         * aot-compiler.c: Add a bunch of statistics.
15181
15182         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15183
15184 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15187
15188 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15189
15190         * 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>.
15191
15192 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15193
15194         * mini.c (mono_method_to_ir): Obtain the original method in the
15195         CIL stream and use this to perform validation.
15196
15197         Fixed: #78816
15198
15199 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15200
15201         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15202         (mono_arch_call_opcode): Ditto.
15203
15204         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15205         #78826.
15206
15207         * mini.c (mono_patch_info_dup_mp): New helper function.
15208         
15209         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15210         compilation. Fixes #78827.
15211
15212 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15213
15214         * declsec.c: Use original security informations for
15215           MONO_WRAPPER_MANAGED_TO_MANAGED.
15216
15217 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15218
15219         * mini.c: Allow Com Interop methods/classes and
15220         don't verify COM wrapper calls
15221         
15222
15223 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15224
15225         * inssel-long32.brg: Fix long->i4 checked conversion.
15226
15227         * exceptions.cs: Add a test for the above.
15228
15229 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15230
15231         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15232
15233         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15234         leaks.
15235
15236         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15237         #78775.
15238
15239 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15240
15241         * mini.c: Fix solaris/x86 exception handling.
15242
15243         * Makefile.am: Get rid of $(ICU_LIBS).
15244
15245 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15246
15247         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15248         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15249         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15250
15251         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15252
15253         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15254         this function causes a SIGSEGV.
15255
15256 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15257
15258         * mini.c: Remove unused solaris/x86 includes.
15259
15260 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15261
15262         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15263
15264 2006-06-20  Jb Evain  <jbevain@gmail.com>
15265
15266         * cpu-g4.md: fix max length of start_handler instruction.
15267
15268 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15269         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15270
15271 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15272         * ssa.c: Fixed bug 78653 for SSA based deadce.
15273         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15274         MonoInst.flags, used in SSA based deadce.
15275         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15276         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15277
15278 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15279
15280         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15281         it can end up using non executable memory on ppc64 systems
15282         running ppc32 userspace (fix from Johannes Berg).
15283
15284 2006-06-14  Dick Porter  <dick@ximian.com>
15285
15286         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15287         4.1.1
15288
15289 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15290         * mini.c: Made so that inline is locally disabled if it would
15291         trigger a .cctor, because too many apps depend on this behavior
15292         (which seems to be also the one of the MS CLR).
15293
15294 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15297         No idea why this worked before.
15298
15299         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15300         which branch to outer exception clauses since they could skip the
15301         inner finally clauses. Fixes #78633.
15302
15303         * exceptions.cs: Add a test for the above.
15304
15305         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15306         Fixes #78629.
15307
15308         * iltests.il: Add a test for the above.
15309
15310 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15311
15312         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15313         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15314
15315         * iltests.il: Add a test for the above.
15316
15317 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15318
15319         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15320         
15321         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15322         methods as instrinsics.
15323
15324 2006-06-09  Wade Berrier <wberrier@novell.com>
15325
15326         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15327         (simple-cee-ops.h ssapre-mini-ops.h)
15328
15329 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15330
15331         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15332         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15333         instruction).
15334         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15335         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15336
15337 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15338
15339         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15340
15341 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15342
15343         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15344         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15345         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15346         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15347         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15348         of opcodes, so that bug 78549 should not happen again.
15349         * ssapre.c: Updated to use the renamed files.
15350
15351 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15354         in OP_ATOMIC_EXCHANGE_I4.
15355
15356 2006-06-07  Wade Berrier <wberrier@novell.com>
15357
15358         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15359         in mono_debugger_create_notification_function)
15360
15361 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15362
15363         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15364         
15365         * mini.c (type_from_stack_type): Disable some changes which do not
15366         seem to work.
15367
15368         * driver.c: Reenable opts.
15369
15370         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15371         of the evaluation stack.
15372         
15373         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15374         evaluation stack trace at entry to the bblock.
15375
15376         * mini.c (merge_stacks): New function to perform verification of stack merges.
15377         Turned off by default.
15378
15379         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15380         STACK_MP.
15381         
15382 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15383
15384         * local-propagation.c: Fixed bug 78549.
15385
15386 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15387
15388         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15389
15390 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15391
15392         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15393         tramp-arm.c, tramp-ia64.c
15394         (mono_debugger_create_notification_function): Update signature to
15395         new signature and use new protocol for creating the notification
15396         function.  
15397
15398         Should fix the build.
15399
15400 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15401
15402         * exceptions-ppc.c (mono_jit_walk_stack)
15403         (ves_icall_get_frame_info): Fix the build
15404
15405 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15408
15409 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15410
15411         * il2tests.2.il: New file for generics CIL tests.  Add test for
15412         #78019.
15413         * Makefile.am: Update.
15414
15415         Fix #78019
15416         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15417         to nullable types.
15418
15419 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15420
15421         * aliasing.c: Fixed bug 78311.
15422
15423 2006-05-29  Martin Baulig  <martin@ximian.com>
15424
15425         * mini-exceptions.c (mono_find_jit_info): When computing the
15426         native offset, check whether we're actually inside the method's
15427         code; call mono_debug_print_stack_frame() to format the frame.
15428         (ves_icall_System_Exception_get_trace): Call
15429         mono_debug_print_stack_frame() to format the stack frame.
15430         (ves_icall_get_trace): Update to the new debugging API.
15431         (mono_jit_walk_stack_from_ctx): Likewise.
15432         (ves_icall_get_frame_info): Likewise.
15433
15434         * mini.c (get_method_from_ip): Use the new debugging API.
15435         (mono_print_method_from_ip): Likewise.
15436
15437         * exceptions-ppc.c
15438         (mono_jit_walk_stack): Use the new debugging API.
15439         (ves_icall_get_frame_info): Likewise.   
15440
15441 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15442
15443         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15444
15445 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15446
15447         * mini.c: Added "limitator" to inline for debugging.
15448
15449 2006-05-24  Martin Baulig  <martin@ximian.com>
15450
15451         * debug-debugger.c (mono_debugger_init): Create a private,
15452         malloc()-based code manager for the notification function and
15453         intentionally leak it on exit.  This fixes the crash-on-exit race
15454         condition.
15455
15456         * tramp-amd64.c
15457         (mono_debugger_create_notification_function): Added
15458         `MonoCodeManager *' argument.
15459
15460         * tramp-x86.c
15461         (mono_debugger_create_notification_function): Added
15462         `MonoCodeManager *' argument.
15463
15464 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15465
15466         * aliasing.c: Fixed 64 bit issue.
15467         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15468         default since all known bugs are fixed (one more time!).
15469
15470 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15471
15472         * mini.c: write barrier support.
15473
15474 2006-05-23  Martin Baulig  <martin@ximian.com>
15475
15476         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15477         check at the top of the file.
15478
15479 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15480
15481         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15482         reverting changes without reason and without changelog entries.
15483
15484 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15485
15486         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15487         to a few opcodes. Fixes #78439.
15488
15489         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15490         consistency with other archs.
15491
15492         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15493
15494 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15495
15496         * debug-debugger.c: fix the build.
15497
15498 2006-05-17  Martin Baulig  <martin@ximian.com>
15499
15500         * debug-debugger.c
15501         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15502         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15503         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15504         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15505
15506 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15507
15508         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15509
15510 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15511
15512         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15513         MONO_TYPE_GENERICINST.
15514         
15515         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15516         MONO_TYPE_GENERICINST.
15517
15518 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15519
15520         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15521         #78325.
15522
15523 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15524
15525         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15526         mempool.
15527         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15528
15529 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15530
15531         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15532         mono_trace_cleanup ().
15533
15534         * iltests.il: Fix problem with the newly added test.
15535
15536         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15537         due to register constraints, free up the previous hreg. Fixes #78314.
15538
15539         * iltests.il: Add new test for #78314.  
15540
15541         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15542         Interlocked.Add. Fixes #78312.
15543
15544         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15545         
15546 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15547
15548         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15549
15550 2006-05-05  Martin Baulig  <martin@ximian.com>
15551
15552         * debug-mini.c (mono_debug_open_block): New method.
15553
15554         * mini-amd64.c
15555         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15556         the beginning of each basic block.
15557
15558         * mini-x86.c
15559         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15560         the beginning of each basic block.
15561
15562 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15563
15564         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15565         default until I understand why they break the build on amd64.
15566
15567 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15568
15569         * mini.c (mini_cleanup): Call mono_cleanup ().
15570
15571         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15572         errors.
15573
15574 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15575
15576         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15577         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15578         default since all known bugs are fixed, and I cannot reproduce bug
15579         77944... I'm asking Matt Hargett to test again after this commit.
15580
15581 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15582
15583         * mini-codegen.c: Fixed typo that thrashed inline.
15584
15585 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15586
15587         * dominators.c (compute_dominators): Avoid using a worklist since
15588         it is not correct in some cases. Instead, iterate over all bblocks as
15589         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15590
15591 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15592
15593         * mini.c (mono_jit_compile_method_inner): Use
15594         mono_prepare_exception_from_error that resets the value
15595         internally.
15596
15597 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15598
15599         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15600         
15601 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15602
15603         * aliasing.c: Fixed bug 78210.
15604
15605 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15606
15607         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15608         default until all their problems (or the ones they trigger) are fixed.
15609
15610 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15611
15612         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15613         
15614         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15615         as loaded only after resolving patches since that could invoke the same method.
15616
15617         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15618
15619         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15620         functions.
15621
15622         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15623         AOT loader.
15624
15625         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15626         stack.
15627
15628         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15629         made from AOT code through the PLT table.
15630
15631         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15632         holding the plt offset when a call is made to the aot plt trampoline.
15633         
15634 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15637         amd64 AOT support.
15638
15639         * Makefile.am (common_sources): Fix build breakage.
15640
15641         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15642         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15643         intra-assembly calls if possible.
15644         
15645         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15646
15647         * mini-trampolines.c: Handle PLT entries.
15648
15649         * mini.c: Avoid creating a GOT var for calls.
15650
15651         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15652         from mscorlib code.
15653
15654         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15655         from mscorlib code.
15656
15657         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15658         AOT code.       
15659
15660         * mini.h: Bump AOT file format version.
15661         
15662         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15663         covers more cases.
15664
15665 2006-04-25  Martin Baulig  <martin@ximian.com>
15666
15667         * driver.c: Disable copyprop, consprop and inline when running
15668         inside the debugger.
15669
15670 2006-04-25  Martin Baulig  <martin@ximian.com>
15671
15672         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15673         with `get_current_thread' and added `detach'.
15674         (MonoDebuggerMetadataInfo): Added `thread_size',
15675         `thread_tid_offset', `thread_stack_ptr_offset' and
15676         `thread_end_stack_offset'.
15677
15678 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15681         aot-runtime.c.
15682
15683         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15684         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15685
15686         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15687
15688         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15689
15690         * aot.c: Add support for ADJUSTED_IID.  
15691
15692 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15693
15694         * aot.c (emit_method_order): Don't align method_order_end.
15695
15696         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15697         the interface ID changes.
15698
15699 2006-04-21  Dick Porter  <dick@ximian.com>
15700
15701         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15702         cleaning up a thread.  Fixes the new part of bug 77470.
15703
15704 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15705
15706         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15707         to managed wrapper.
15708                      
15709 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15712         
15713         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15714         SIGSEGV. Fixes #78072.
15715
15716         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15717         unregister our SIGABRT handler.
15718
15719 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15720
15721         * mini.c: Disabled inline where it can alter the call stack in a
15722         way visible from managed code.
15723         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15724         default.
15725
15726 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15727
15728         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15729         on other platforms. Fixes #78089.
15730
15731 2006-04-13  Martin Baulig  <martin@ximian.com>
15732
15733         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15734         determine whether we're inside the debugger.
15735
15736         * debug-debugger.h
15737         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15738
15739 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15740
15741         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15742         handler clauses. Fixes #78024.
15743
15744         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15745         in the CALL_MEMBASE opcodes. Fixes #78088.
15746         (mono_arch_get_vcall_slot_addr): Ditto.
15747
15748 2006-04-10  Martin Baulig  <martin@ximian.com>
15749
15750         * debug-debugger.c: The thread handling code has now been moved
15751         into ../metadata/threads.c.
15752
15753 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15754
15755         * driver.c (mono_main): Fix --with-gc=none build.
15756
15757         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15758         (mono_spillvar_offset_float): Ditto.
15759         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15760         hreg, not when its !global, since on ia64, there is a third category: stacked
15761         registers.      
15762
15763 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15764
15765         * mini.c: set MonoInst->klass for load field address and a few other
15766         places.
15767
15768 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15771
15772 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15773
15774         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15775         the branch opt changes.
15776
15777 2006-04-06  Dick Porter  <dick@ximian.com>
15778
15779         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15780         
15781         * wapihandles.c (mini_wapi_seminfo): 
15782         * driver.c (mono_main): Add semaphore info option
15783
15784 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15785
15786         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15787         branch optimization changes. Fixes #78009.
15788
15789 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15790
15791         * mini.c: ignore accessibility of methods in managed->native wrappers.
15792
15793 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15796         
15797         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15798
15799 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15800
15801         * mini.c: Modify the branch optimizations to preserve the invariant that
15802         the entries inside the in_bb and out_bb arrays are unique.
15803         (mono_unlink_bblock): Avoid creation of new arrays.
15804
15805 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15806
15807         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15808         change (#77992).
15809
15810 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15811
15812         * mini.c (optimize_branches): Remove the "optimizations" in
15813         the cbranch1/cbranch2 -> branch cases which were causing several
15814         problems in the past. Fixes #77986.
15815
15816 2006-03-31  Chris Toshok  <toshok@ximian.com>
15817
15818         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15819         default optimizations :(
15820
15821 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15822
15823         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15824         branch.
15825
15826 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15827
15828         * local-propagation.c: Added comments to structs and removed
15829         "Mono" prefixes from local tree mover types.
15830
15831 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15832
15833         * Makefile.am (arch_sources): Define this for each architecture so 
15834         libmono_la_SOURCES is defined in one place.
15835
15836 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15837
15838         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15839         from handles/.
15840
15841 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15842
15843         * driver.c: print the GC name supplied by configure.
15844
15845 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15846
15847         * local-propagation.c: Added tree mover, and moved here all the
15848         local propagation code from mini.c
15849         * mini.c: Added support for treeprop, and moved all the local
15850         propagation code to local-propagation.c
15851         * mini.h: Added support for treeprop
15852         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15853         treeprop, inline and deadce by default
15854         * Makefile.am: Added local-propagation.c
15855
15856 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15859
15860 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15861
15862         * debug-debugger.c: make it compile without the Boehm GC.
15863
15864 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15865
15866         * mini.c: fixed issue with mismatch when an icall is registered
15867         with multiple names but same address.
15868
15869 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15870
15871         * declsec.c, mini-exceptions.c: use write barrier to set reference
15872         fields of managed objects.
15873
15874 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15875
15876         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15877         (can_access_internals): Fix a warning.
15878
15879         * mini.c (print_method_from_ip): Rename this to 
15880         mono_print_method_from_ip so it gets exported.
15881
15882         * trace.c: Deal with strings inside StringBuilder's containing garbage
15883         and fix memory leaks. Fixes #77848.
15884
15885 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15886
15887         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15888         fixes #77787.
15889
15890 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15891         
15892         * mini-s390.c: Remove OP_X86_TEST_NULL.
15893
15894 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15895
15896         * mini.c: use the correct GetHashCode() for the moving collector.
15897
15898 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15899
15900         * liveness.c: Regalloc spill cost tuning.
15901
15902 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15903         
15904         * mini-s390x.h: Correct S390_LONG macro.
15905
15906         * mini-s390x.c: Cleanup unused code.
15907
15908 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15909
15910         * jit-icalls.h: New file.
15911
15912         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15913         icalls and include that instead of including jit-icalls.c.
15914
15915         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15916         OP_X86 opcodes.
15917
15918 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15919
15920         * mini.c: when checking for member accessibility, also check for
15921         friend assemblies and for explicit interface implementations.
15922
15923 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15924
15925         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15926
15927         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15928
15929         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15930         common cases are done first.    
15931
15932         * mini-ops.h: Only define platform specific opcodes on the given platform.
15933
15934         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15935         branch.
15936         
15937 2006-03-14  Martin Baulig  <martin@ximian.com>
15938
15939         Revert Paolo's change from r57348:
15940
15941         * mini.h: don't use gboolean for bitfields.
15942         * mini.c: verifier changes for fields and methods accessibility.
15943
15944 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15945
15946         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15947
15948         * mini-s390x.c: Fix conv_r_un.
15949
15950         * cpu-s390, cpu-s390x.md: Fix lengths.
15951
15952 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15953
15954         * mini.c: nested types have access to all the nesting
15955         levels, not just the enclosing types.
15956
15957 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15958
15959         * mini.c: added a few more verification checks.
15960
15961 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15962
15963         * liveness.c: Merge optimizations from the linear-il branch.
15964
15965 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15966
15967         * mini-ia64.c (emit_call): Add a comment.
15968
15969         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15970
15971         * tramp-ia64.c: Fix some warnings.
15972
15973 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15974
15975         * mini.h: don't use gboolean for bitfields.
15976         * mini.c: verifier changes for fields and methods accessibility.
15977
15978 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15979
15980         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15981         lazy icall wrapper changes.
15982
15983         * dominators.c: Replace all the dominator algorithms with faster
15984         ones from the linear-il branch.
15985
15986         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15987         the mempool.
15988
15989         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15990         common cases are done first.
15991
15992         * mini-amd64.c: Fix some warnings.
15993
15994         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15995         from the mempool.
15996
15997         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15998         added code.
15999
16000         * mini.h: Add a missing prototype.
16001
16002 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16003
16004         * mini.c: Compile icall wrappers lazily.
16005
16006         * mini-codegen.c: Use printf instead of g_print since its much faster.
16007
16008         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16009         function.
16010
16011         * mini.c (optimize_branches): Cache the negative result from 
16012         remove_block_if_useless ().
16013
16014         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16015         Also fix some bblock linking issues.
16016
16017         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16018         assembly files.
16019
16020         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16021
16022         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16023         accessed fields first, for better cache behavior.
16024         
16025 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16026
16027         * mini.c: speedup IList<T> array accesses.
16028
16029 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16030
16031         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16032         inline_costs counter. Fixes #77190.
16033
16034 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16035
16036         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16037         trace messages. Fixes #77706.
16038
16039 2006-03-04  Martin Baulig  <martin@ximian.com>
16040
16041         * tramp-amd64.c, tramp-x86.c
16042         (mono_debugger_create_notification_function): Use
16043         mono_global_codeman_reserve() to allocate a buffer at runtime and
16044         return it.
16045
16046         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16047
16048         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16049         notification function at runtime and then call `initialize' in the
16050         `MONO_DEBUGGER__debugger_info' vtable.
16051
16052 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16053
16054         * iltests.il: Fix a visibility problem.
16055
16056 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16057
16058         * driver.c, mini.c: add hooks for the counters API.
16059
16060 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16061
16062         * driver.c: show disabled options.
16063
16064 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16065
16066         * linear-scan.c: always use cost-driven selection.
16067
16068 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16069
16070         * jit-icalls.c (helper_compile_generic_method): Revert change from
16071         2006-02-24.
16072
16073 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16074
16075         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16076
16077 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16078
16079         * inssel.brg: style fixes, mostly to force the updated monoburg
16080         to run for people using svn.
16081
16082 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16083
16084         * mini.c: match monoburg changes.
16085
16086 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16087
16088         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16089         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16090         declaration in the header file.
16091
16092 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16093
16094         * helpers.c: reduce relocations and mem usage.
16095
16096 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16097
16098         * mini.h, mini-codegen.c: disable logging features if
16099         requested by configure.
16100
16101 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16102
16103         * mini.c: tiny verifier changes.
16104
16105 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16106
16107         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16108         cpu-pentium.md: stack alignment changes for osx/x86,
16109         partially from Geoff Norton <gnorton@customerdna.com>.
16110
16111 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16112
16113         * jit-icalls.c (helper_compile_generic_method): Update to changes
16114         in metadata/class.c.
16115
16116 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16117         
16118         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16119         
16120         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16121         interface calls with large offsets.
16122
16123 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16124
16125         * jit-icalls.c (helper_compile_generic_method): Document the
16126         special-case we depend on so that we can inflate the method twice
16127         with the same context with no bad side-effects.
16128
16129 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16130
16131         * mini-x86.c, mini-amd64.c: fix for case when xen support
16132         is disabled.
16133
16134 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16135
16136         * mini-x86.c, mini-amd64.c: generate code to access tls items
16137         in a faster way for Xen systems.
16138
16139 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16140
16141         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16142         updates and compilation fixes for the OSX/x86 port, mostly from
16143         Geoff Norton <gnorton@customerdna.com>.
16144
16145 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16146
16147         * inssel.brg: faster interface call implementation
16148         to sync with the interface_offsets MonoVTable changes.
16149
16150 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16151
16152         * mini.c: more verification checks.
16153
16154 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16155
16156         * mini.c: added a few more verification checks.
16157
16158 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16159
16160         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16161         facility on the processor and use it if available.
16162
16163 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16164
16165         * driver.c, aot.c, mini.c: throw exception if the IL code is
16166         invalid or unverifiable.
16167
16168 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16169
16170         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16171         m.StructField.
16172
16173 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16174
16175         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16176
16177 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16178
16179         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16180         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16181         handling of instantiated generic valuetypes.
16182
16183 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16184
16185         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16186         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16187         instead.
16188
16189         * generics.2.cs: Revert the nullable reftypes tests.
16190
16191 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16192
16193         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16194         using __builtin_frame_address (1) as it doesn't work in the presence
16195         of optimizations. Hopefully fixes #77273.
16196
16197         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16198         -> generics.cs change as it doesn't work with some automake versions.
16199
16200 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16201
16202         * mini.c: handle systems that sue a different way to
16203         retrieve the stack address of the current thread.
16204
16205 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16206
16207         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16208         it specially in the makefile.
16209
16210         * generics.2.cs: Add tests for nullable reference types.
16211
16212 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16213
16214         * mini.c: always handle the case when mono_jit_init()
16215         is called in a thread different from the main thread,
16216         confusing libgc (bug #77309).
16217
16218 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16219
16220         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16221
16222 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16223
16224         * mini.c: change optimize_branches () to use a single loop
16225         and introduce a new optimization to simplify some range checks.
16226
16227 2006-02-03  Martin Baulig  <martin@ximian.com>
16228
16229         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16230         and merged with debugger_thread_manager_add_thread().
16231         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16232         inform the debugger about the main thread.
16233
16234 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16235
16236         * basic.cs: Add test for div.un/rem.un constant folding.
16237
16238 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16239
16240         * cpu-s390x.md: correct int_xor_imm length
16241
16242 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16243
16244         * generics.2.cs: New test for #77442.
16245
16246         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16247         #77442.
16248
16249 2006-02-02  Martin Baulig  <martin@ximian.com>
16250
16251         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16252         <mono/metadata/mono-debug-debugger.h>   
16253
16254         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16255
16256 2006-02-02  Martin Baulig  <martin@ximian.com>
16257
16258         * debug-debugger.h: New header file for debug-debugger.c.
16259
16260         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16261         function is a separate thread anymore; add support for attaching.
16262
16263 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16264
16265         * tramp-x86.c: Fix a warning.
16266
16267 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16268
16269         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16270         on very large methods.
16271
16272         * aot.c (load_patch_info): Fix a warning.
16273
16274 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16275
16276         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16277         mini-ops.h: alu membase optimizations.
16278
16279 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16280
16281         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16282         to speedup StringBuilder.
16283
16284 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16285
16286         * dominators.c (mono_compute_natural_loops): Fix detection of
16287         loop body start blocks.
16288
16289         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16290
16291 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16292
16293         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16294         #75145.
16295
16296 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16297
16298         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16299
16300 2006-01-25  Martin Baulig  <martin@ximian.com>
16301
16302         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16303         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16304         started to cleanup this file a little bit.
16305
16306 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16307
16308         * mini.c: optimize a codepath frequently happening in generics code.
16309
16310 2006-01-23  Martin Baulig  <martin@ximian.com>
16311
16312         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16313
16314         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16315         functions directly.
16316
16317         * driver.c: debug-debugger.c is only available if
16318         `MONO_DEBUGGER_SUPPORTED' is defined.   
16319
16320 2006-01-23  Martin Baulig  <martin@ximian.com>
16321
16322         * debug-debugger.c: Only enable this on platforms where the Mono
16323         Debugger is working (x86 and x86_64).
16324
16325 2006-01-21  Martin Baulig  <martin@ximian.com>
16326
16327         The Mono Debugger is now using the normal `mono' instead of the
16328         `mono-debugger-mini-wrapper' when executing managed code.
16329
16330         * debug-debugger.c: New file; previously known as
16331         debugger/wrapper/wrapper.c.
16332
16333         * debug-mini.c (mono_init_debugger): Removed.
16334
16335         * driver.c (mono_main): Added new `--inside-mdb' command line
16336         argument which is used when running inside the debugger.
16337
16338 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16339
16340         * liveness.c (mono_analyze_liveness): Remove some unused data
16341         structures.
16342
16343 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16344
16345         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16346
16347 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16348
16349         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16350         depends on implementation details of monobitset.
16351
16352         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16353         Fixes #77271.
16354
16355 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16356
16357         * liveness.c: Update after monobitset changes.
16358
16359 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16360
16361         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16362
16363 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16364
16365         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16366
16367         * mini-s390x.c: Remove warning messages.
16368
16369 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16370
16371         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16372
16373 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16374
16375         * generics.2.cs: Add ldelem/stelem_any test.
16376
16377 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16378
16379         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16380
16381 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16382
16383         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16384         
16385 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16386
16387         * generics.2.cs: Reenable vtype tests.
16388
16389         * inssel-x86.brg: Remove an icorrect valuetype rule.
16390
16391 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16392
16393         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16394         initial support for OP_ABS.
16395
16396 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16397
16398         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16399
16400 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16401
16402         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16403         conversion and implement LADD/LSUB.
16404
16405         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16406         architectures.
16407
16408 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16409
16410         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16411
16412         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16413         architectures.
16414
16415 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16416
16417         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16418         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16419         (stack walk problem).
16420
16421 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16422
16423         * aot.c (mono_aot_load_method): Fix a warning.
16424
16425 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16426
16427         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16428
16429 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16430
16431         * iltests.il: Add test for #77148.
16432
16433         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16434         #77148.
16435
16436 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16437
16438         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16439
16440 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16441
16442         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16443         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16444
16445         * basic-long.cs: Add lconv-to-r4/r8 tests.
16446
16447 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16448
16449         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16450
16451         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16452         here as on other archs.
16453
16454 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16455
16456         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16457
16458 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16459
16460         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16461         
16462         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16463
16464         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16465         instrument_prolog; Add memory_barrier instruction.
16466
16467 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16468
16469         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16470
16471 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16472
16473         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16474
16475         * aliasing.c inssel.brg: Fix warnings.
16476
16477         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16478         could skip initialization of some parts of memory.
16479
16480         * mini.c mini-ia64.c: Fix warnings.
16481
16482         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16483
16484 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16485
16486         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16487         a crash seen on sparc.
16488
16489         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16490         
16491         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16492
16493 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16494
16495         * mini-ops.h: Add s390_backchain instruction
16496
16497         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16498
16499         * cpu-s390.md: Add s390_backchain instruction
16500
16501         * mini-s390.c: Significant ABI changes
16502
16503         * mini-s390.h: Cater for zero length structures
16504
16505 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16506
16507         * mini-s390.c: ABI fixes
16508
16509         * inssel-s390.brg: Remove debug statements
16510
16511         * cpu-s390.md: Fix length of ATOMIC_xx operations
16512
16513 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16514
16515         * basic-float.cs: Add float<->long conversion tests.
16516
16517 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16518
16519         * mini-s390.c: Fix LOCALLOC processing.
16520
16521         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16522
16523 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16524
16525         * iltests.il: Add tests for some opcodes not covered by the other
16526         tests.
16527
16528 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16529
16530         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16531         register loading for Tail processing; Correct trace output.
16532
16533         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16534
16535         * cpu-s390.md: Correct size of jmp instruction. 
16536
16537 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16538
16539         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16540
16541 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16542
16543         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16544           Bring s390 up to current level.
16545
16546 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16547
16548         * generics.2.cs: Disable the newly added tests as they do not work yet.
16549         
16550         * generics.2.cs: Add valuetype tests.
16551
16552 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16553
16554         * basic-long.cs: Add i4->u8 test.
16555
16556         * objects.cs: Add tests for JIT intrinsic.
16557
16558         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16559         optimizations lost by a mistake.
16560
16561 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16562
16563         * basic-long.cs: Remove a test moved to objects.cs.
16564
16565         * arrays.cs: Add more array tests.
16566
16567 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16568
16569         * arrays.cs: Add new tests for multi-dimensional arrays.
16570
16571 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16572
16573         * Makefile.am (test_sources2): Add generics.2.cs.
16574         (EXTRA_DIST): Add test_sources2.
16575
16576 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16577
16578         Support for boxing and unboxing nullable types as well as the
16579         isinst operation on nullables, per the CLI ammendment.
16580
16581         * inssel.brg (CEE_ISINST): Special case for nullable
16582
16583         * mini.c (handle_unbox_nullable): new method
16584         (handle_box): Special case for nullable types
16585         (mono_method_to_ir): Call handle_unbox_nullable in correct
16586         places.
16587
16588         * generics.2.cs: New test suite
16589
16590         * Makefile.am: Support for regression tests with generics.
16591
16592 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16593
16594         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16595         allocated to registers. Fixes #76800.
16596
16597 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16598
16599         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16600
16601 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16602
16603         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16604         of platforms.
16605
16606 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16607
16608         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16609         objects.cs.
16610
16611         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16612         
16613         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16614 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16615
16616         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16617         single precision before storing to a single precision location.
16618
16619 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16620
16621         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16622
16623 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16624
16625         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16626         correct files.
16627
16628         * basic.cs: Remove test_0_byte_compares test which was moved to
16629         objects.cs a long time ago.
16630
16631 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16632
16633         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16634
16635 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16638         handlers are called.
16639
16640         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16641         throwing code.
16642
16643          * mini-ia64.c: Add support for the throw->branch exception 
16644         optimization.   
16645
16646         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16647
16648 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16649
16650         * mini.c: Enabled "fastpath" deadce :-)
16651         
16652 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16653
16654         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16655         alias analysis pass to support it.
16656         * mini.h: Likewise.
16657         * ssa.c: Likewise.
16658         * liveness.c: Likewise (liveness computation can use aliasing
16659         information to be more accurate).
16660         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16661         moreover made so that "--compile-all" uses the given optimization
16662         flags and not the default ones.
16663         * aliasing.c: Alias analysis (new file).
16664         * aliasing.h: Likewise.
16665         * Makefile.am: added "aliasing.c" and "aliasing.h".
16666         
16667 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16668
16669         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16670         OP_L opcodes.
16671
16672 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16673
16674         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16675         fp >= end_of_stack exit condition, as it is not needed, and it might
16676         become true for fp eliminated frames.
16677
16678 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16679
16680         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16681         coded offsets.
16682
16683 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16684
16685         * mini-arm.c: fixed alignment of doubles/longs to match
16686         the C ABI (bug #76635).
16687
16688 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16689
16690         * aot.c: fix compilation with --enable-minimal=aot.
16691
16692 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16693
16694         * mini-arm.c: fixed compatibility with the new
16695         floating point emulator package for compares.
16696
16697 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16698
16699         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16700
16701 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16702
16703         * mini-exceptions.c (print_stack_frame): Output to stderr.
16704         (mono_handle_native_sigsegv): Ditto.
16705
16706 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16709         OP_LCONV_TO_OVF_I implementation.
16710
16711         * mini-amd64.c: Add support for the throw->branch exception 
16712         optimization.
16713
16714         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16715         when the catch clause catches a more general exception, i.e. Object.
16716
16717 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16718
16719         * cpu-ia64.md: Remove unused opcodes.
16720
16721         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16722         specific defines for architectures defining USE_SIGACTION.
16723
16724         * mini-ia64.c: Fix some warnings.
16725
16726         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16727         version seemed to skip a frame.
16728
16729 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16730
16731         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16732         only calls which are made to native code use this flag.
16733
16734 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16737         varargs methods as well.
16738         
16739         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16740         which have save_lmf set. Reorganize methods prologs a bit.
16741
16742         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16743         debugger to the proper place.
16744
16745 2005-10-29  Martin Baulig  <martin@ximian.com>
16746
16747         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16748         when running inside the debugger until the debugger has support
16749         for it.
16750
16751 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16752
16753         * mini.h: Fix a warning.
16754
16755 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16756
16757         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16758         we expose publicly, this returns the string.
16759
16760 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16761
16762         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16763         with fp elimination.
16764
16765 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16766
16767         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16768         native stacktrace using the glibc 'backtrace' function if available.
16769
16770 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16771
16772         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16773
16774         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16775         handle SIGSEGVs received while in native code.
16776
16777         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16778         code, call mono_handle_native_sigsegv which will abort the runtime
16779         after printing some diagnostics, instead of converting it into a
16780         confusing NullReferenceException.
16781
16782 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16783
16784         * cpu-pentium.md: Remove unused opcodes.
16785
16786 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16787
16788         * mini-amd64.h (MonoLMF): Add rsp field.
16789
16790         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16791         the lmf too.
16792
16793 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16794
16795         * mini-codegen.c (get_register_spilling): Fix some warnings.
16796
16797 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16798
16799         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16800         elimination during exception handling. Enable fp elimination by
16801         default.
16802
16803         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16804         elimination.
16805
16806 2005-10-16  Martin Baulig  <martin@ximian.com>
16807
16808         * mini-exceptions.c
16809         (mono_debugger_run_finally): New public method for the debugger.
16810
16811 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16812
16813         * debug-mini.c (mono_debug_init_method): Fix warning.
16814
16815         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16816         the 'exname' parameter const to fix some warnings.
16817
16818 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16819
16820         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16821         introduced by the previous patch.
16822
16823 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16824
16825         * basic-float.cs: Add test for precision of float arithmetic.
16826
16827         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16828         when loading/storing single values from/to memory.
16829
16830         * mini.c (mono_jit_compile_method_with_opt): Create the function
16831         pointers in the correct domain.
16832
16833 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16834
16835         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16836         introduced by previous patch.
16837         
16838         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16839         when out_filter_idx is NULL.
16840
16841         * mini-exceptions.c: Don't run filter clauses twice during exception
16842         handling. Fixes #75755.
16843
16844 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16845
16846         * aot.c: Add support for ldflda wrappers.
16847
16848         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16849         #75902.
16850
16851 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16852
16853         * mini.c, mini.h: do not consider exception handlers blocks when
16854         setting up interface variables.
16855
16856 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16857
16858         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16859
16860 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16861
16862         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16863         causes a regression.
16864
16865         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16866
16867 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16868
16869         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16870         of the OP_P definitions.
16871
16872         * TODO: Add a proposal for dealing with the CEE/OP mess.
16873
16874         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16875         optimizations from the x86 port.
16876
16877         * cpu-amd64.md: Ditto.
16878
16879         * basic.cs basic-long.cs: Add tests.
16880
16881 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16882
16883         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16884         Patrik Torstensson's implementation of my exception-handling
16885         optimization idea, when the exception object is not used
16886         (bug #62150).
16887
16888 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16889
16890         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16891         of the mul_imm optimizations from the old jit.
16892
16893 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16894
16895         * mini.c, liveness.c: patch by Patrik Torstensson and
16896         Zoltan Varga to improve performance in methods with
16897         exception clauses.
16898
16899 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16900
16901         * driver.c: Remove 'Globalization' entry from --version.
16902
16903 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16904
16905         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16906         there is a profiler interested in JIT events.
16907
16908         * aot.c: Load profile files produced by the AOT profiling module, and
16909         reorder methods based on the profiling info. Add a 'method_order' table
16910         to the AOT file to make mono_aot_find_jit_info work with the reordered
16911         methods.
16912
16913         * mini.h: Bump AOT file version info.
16914
16915 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16916
16917         * mini-arm.h: work around what looks like a gcc bug when optimizations
16918         are enabled.
16919
16920 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16921
16922         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16923         conditionals.  Use ...
16924         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16925
16926 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16927
16928         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16929         to determine the amount of memory to copy when passing valuetypes.
16930
16931         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16932         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16933
16934 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16935
16936         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16937         information about aot.
16938
16939 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16940
16941         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16942         macros. This will allow a deadlock debugger to easily be plugged
16943         in.
16944
16945 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16946
16947         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16948
16949 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16950
16951         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16952         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16953         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16954         ($(arch_built)) [CROSS_COMPILING]: Error out.
16955
16956 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16957
16958         * aot.c: Add support for the no_special_static flag for classes.
16959
16960 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16961
16962         * Reapply reverted patches.
16963
16964         * *: Revert r50174 as well.
16965
16966         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16967
16968 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16969
16970         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16971
16972 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16973
16974         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16975         part of the SIG_HANDLER_SIGNATURE.  
16976
16977 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16978
16979         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16980         statistics.
16981
16982         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16983         introduced by previous patch.
16984
16985 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16986
16987         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16988         saved registers too.
16989
16990         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16991         upon the information returned by get_call_info ().
16992         
16993         * mini-x86.c (add_float): Fix stack size calculation.
16994         (mono_arch_call_opcode): Rewrite this so it works based up the
16995         information returned by get_call_info ().
16996         (mono_arch_get_this_vret_args): Ditto.
16997
16998 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16999
17000         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17001         in cinfo to determine the registers which need to be used.
17002
17003 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17004
17005         * driver.c (mono_main): Add --server and --desktop flags. 
17006
17007 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17008
17009         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17010         registers as global registers.
17011
17012         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17013         longer needed with the new register allocator.
17014
17015         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17016
17017         * cpu-ia64.md: Remove unused opcodes.
17018         
17019         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17020         
17021 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * cpu-amd64.md: Remove unused opcodes.
17024
17025         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17026         needed with the new register allocator.
17027
17028         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17029         reg-reg moves.
17030
17031 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17032
17033         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17034
17035 2005-09-16  Martin Baulig  <martin@ximian.com>
17036
17037         * exceptions-amd64.c
17038         (throw_exception): Don't call mono_debugger_throw_exception() if
17039         we're a rethrow - see the FIXME in the code.
17040
17041 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17042
17043         * mini.c (mono_init_exceptions): This only works on some architectures.
17044         
17045 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17046
17047         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17048         on ia64.
17049
17050         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17051
17052         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17053         now in mini-exceptions.c.
17054
17055 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17056
17057         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17058         now in mini-exceptions.c.
17059
17060 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17061
17062         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17063         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17064
17065         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17066         code into mini-exceptions.c. Add some assertions to it.
17067
17068 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17069
17070         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17071         (<software@solmersa.com>). Fix as errors on windows.
17072
17073 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17076         method info into the LMF.
17077
17078 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17079         
17080         * mini-ia64.c: Add proper unwind info for method epilogs.
17081
17082         * exceptions-ia64.c: Add some code to help debugging.
17083         
17084         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17085
17086         * mini-exceptions.c: Fix warning.
17087
17088 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17089
17090         * mini.c: Really fix build.
17091
17092         * mini-x86.c mini-amd64.c: Fix build.
17093
17094 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17095
17096         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17097
17098         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17099         some Interlocked methods as intrinsics.
17100
17101         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17102         for Thread methods as well.
17103
17104         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17105
17106         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17107
17108         * mini-ia64.c mini-x86.c mini-amd64.c 
17109         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17110         OP_MEMORY_BARRIER.
17111         
17112         * mini.c (mono_init_exceptions): Fix build breakage.
17113
17114 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17115
17116         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17117         of instructions. Use the new ia64_unw_op macros for emitting unwind
17118         info.
17119
17120         * mini.c (mono_init_exceptions): Initialize exception handling
17121         related trampolines at startup.
17122
17123 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17124
17125         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17126
17127 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * mini.c: Handle type loading errors gracefully during compilation and
17130         throw the appropriate exception.
17131
17132 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17133
17134         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17135         for the mono binary.
17136
17137 2005-09-09  Martin Baulig  <martin@ximian.com>
17138
17139         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17140         the release.
17141
17142 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17143
17144         * mini-arm.h: use emulation for conv.r.un for the release.
17145
17146 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17147
17148         * mini-arm.c, objects.cs: more fixes and tests for them.
17149
17150 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17151
17152         * mini-arm.c: align structures to at least 4 bytes to be able
17153         to keep our current optimized memcpy.
17154
17155 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17156
17157         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17158
17159 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17160
17161         * mini.c: ignore SIGPIPE.
17162
17163 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17164
17165         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17166
17167         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17168
17169 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17170
17171         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17172
17173 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17174
17175         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17176         exception handling support.
17177         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17178         patch by Brian Koropoff <briank@marakicorp.com>).
17179
17180 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17181
17182         * mini.c: revert another 'optimization' which breaks when
17183         items on the eval stack need to be saved at a basic block end
17184         (bug #75940).
17185
17186 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17187
17188         * jit-icalls.c: for arrays, ensure we always provide
17189         lower bounds.
17190
17191 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17192
17193         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17194         
17195         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17196
17197 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17200         arguments in their original register.
17201
17202 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17203
17204         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17205         memset/memcpy.
17206
17207         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17208         when ssapre is enabled.
17209
17210         * inssel-long.brg: Fix bug in previous patch.
17211
17212         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17213         multiplication by a constant.
17214
17215 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17216
17217         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17218         icc.
17219
17220         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17221         saving registers.
17222
17223 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17224
17225         * inssel-arm.brg: apply changes tested by Brian Koropoff
17226         <briank@marakicorp.com>.
17227
17228 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17229
17230         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17231         
17232 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17233
17234         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17235         to the same register if dreg is just a base register.
17236         (print_ins): Improve printing of membase opcodes.
17237
17238         * inssel-x86.brg: Add optimized ldind(reg) rules.
17239
17240         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17241
17242 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17243
17244         * mini.c: when running under valgrind, set the stack bottom for
17245         the GC at the actual approximate stack for the app (fixes running
17246         mono with valgrind).
17247
17248 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17249
17250         * mini.c: do no break at the first valuetype to init found
17251         (fixes bug #75791).
17252
17253 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17254
17255         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17256
17257 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17258
17259         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17260
17261 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17262
17263         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17264
17265 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17266
17267         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17268
17269         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17270         code.
17271
17272         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17273         code.
17274
17275         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17276         methods.
17277
17278 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17279
17280         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17281
17282 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17283
17284         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17285         in the tail recursion optimization.
17286
17287         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17288         debug info into the assembly file.
17289
17290         * iltests.il: Add test for filter regions.
17291
17292         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17293         initial stack of filter regions. Fixes #75755.
17294
17295 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17296
17297         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17298         stack requirements.
17299
17300 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17301
17302         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17303         the check for an already compiled method on non-ia64 platforms.
17304         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17305         proper domain.
17306
17307         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17308
17309         * inssel-x86.brg: Add some optimized call rules.
17310
17311 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17314         method here.
17315
17316         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17317         mono_arch_patch_delegate_trampoline.
17318
17319         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17320
17321         * mini-trampolines.c: Fix build.
17322
17323         * mini-amd64.h: Add delegate trampolines.
17324
17325         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17326
17327         * inssel-amd64.brg: Add optimized call rules.
17328         
17329         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17330
17331         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17332
17333 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17334
17335         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17336         change.
17337
17338         * mini-ia64.c: Remove LMF fixmes.
17339
17340         * mini-ia64.h: Remove most fields from LMF.
17341
17342         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17343
17344         * mini-trampolines.c: Add support for IA64 function descriptors.
17345
17346         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17347         for IA64 function descriptors.
17348
17349 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17350
17351         * tramp-arm.c: patch the vtable for virtual calls. Added
17352         support code to register/unregister the LMF.
17353         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17354         more LMF work.
17355
17356 2005-08-19  Dick Porter  <dick@ximian.com>
17357
17358         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17359         bit value if needed.
17360
17361 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17362
17363         * mini.c (mini_get_method): Move handling of wrapper data here.
17364
17365         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17366
17367         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17368         virtual.
17369
17370         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17371         bblock->code does not remain empty.
17372
17373 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * arrays.cs: Add regression test for #75832.
17376
17377         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17378         rules. Fixes #75832.
17379
17380         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17381         instruction scheduling.
17382
17383 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17384
17385         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17386
17387 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17388
17389         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17390
17391         * mini-codegen.c: Fix VC build.
17392
17393         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17394
17395 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17396
17397         * mini.h: fix signature for mono_register_opcode_emulation.
17398
17399 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17400
17401         * mini.c: Get rid of most of the helper_sig_... constants using
17402         mono_create_icall_signature ().
17403
17404 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17405
17406         * jit-icalls.c (helper_ldstr): New helper function.
17407
17408         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17409
17410         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17411         throw, load the string using a helper call instead of creating a string object.
17412
17413         * aot.c: Update after LDSTR changes.
17414
17415         * mini.h: Bump AOT file version.
17416         
17417         * aot.c: Save class size info into the AOT file. Print more statistics during
17418         compilation.
17419
17420         * mini.h: Bump AOT file version.
17421
17422         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17423         ordering of disasm cases. Fixes #74957.
17424
17425 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17426
17427         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17428         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17429         the generic code needed for the ARM port.
17430
17431 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17432
17433         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17434         inssel-arm.brg: more ARM features and fixes.
17435
17436 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17437
17438         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17439         ARM port work in progress.
17440
17441 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17442
17443         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17444
17445         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17446
17447         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17448
17449         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17450
17451         * *-ia64.*: Ongoing IA64 work.
17452         
17453         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17454
17455 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17456
17457         * TODO: Remove out-of-data todo stuff.
17458
17459         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17460         dead code.
17461
17462         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17463
17464         * mini.h: Bump corlib version.
17465
17466 2005-07-27  Martin Baulig  <martin@ximian.com>
17467
17468         * mini-codegen.c
17469         (create_copy_ins): Added `const unsigned char *ip' argument; set
17470         `copy->cil_code' from it.
17471
17472 2005-07-27  Martin Baulig  <martin@ximian.com>
17473
17474         * mini-exceptions.c (mono_handle_exception): Don't call
17475         mono_debugger_handle_exception() for filters.
17476
17477 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17480         as well.
17481
17482 2005-07-26  Martin Baulig  <martin@ximian.com>
17483
17484         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17485
17486         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17487         helper_compile_generic_method() if the method is actually virtual
17488         and non-final.
17489
17490 2005-07-26  Martin Baulig  <martin@ximian.com>
17491
17492         * mini.c
17493         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17494         public; this is now accessed directly by the debugger.
17495         (mono_generic_trampoline_code): Removed.
17496
17497         * debug-mini.c
17498         (mono_debug_init_method): Also add interncalls and wrappers.
17499
17500 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17501
17502         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17503
17504 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17505
17506         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17507
17508 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17509
17510         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17511
17512 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17513
17514         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17515         getting TLS offsets on AMD64 too.
17516
17517 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17518
17519         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17520
17521 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17522
17523         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17524         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17525
17526 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17527
17528         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17529
17530         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17531         to mini.c.
17532
17533         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17534         mono_sparc_is_virtual_call ().
17535         
17536         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17537
17538         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17539         trampoline parameters.
17540
17541         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17542         
17543         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17544         to mono_arch_get_vcall_slot_addr.
17545
17546         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17547         trampoline code.
17548
17549         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17550
17551 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17552
17553         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17554
17555 2005-07-19  Martin Baulig  <martin@ximian.com>
17556
17557         * exceptions-amd64.c (throw_exception): Call
17558         mono_debugger_throw_exception() here like we're doing it on i386.
17559
17560 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * mini-ia64.c: Add optimized TLS access support.
17563
17564 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * mini-exceptions.c: Ongoing IA64 work.
17567
17568         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17569
17570         * mini.c: Use the default optimization set when embedding. Fixes
17571         #75194.
17572
17573 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17576         of trampolines to a separate file.
17577
17578         * mini-trampolines.c: New file.
17579
17580         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17581         separate file.
17582         
17583         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17584         amd64/ia64 code.
17585
17586         * mini-codegen.c: Fix cygwin build.
17587
17588 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17589
17590         * mini.c: Add some minor changes needed by the IA64 port.
17591
17592         * *-ia64.*: Ongoing IA64 work.
17593
17594 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17595
17596         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17597         trampolines into arch-independent and arch-dependent parts.
17598
17599         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17600
17601 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17602
17603         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17604
17605         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17606         the xp-regalloc-branch for amd64.
17607
17608         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17609         xp-regalloc-branch for x86.
17610
17611 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17612
17613         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17614
17615 2005-07-06  Martin Baulig  <martin@ximian.com>
17616
17617         * mini.c
17618         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17619         (mono_jit_runtime_invoke): Likewise.
17620
17621 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17622
17623         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17624         on x86 too.
17625         
17626         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17627         without loading their metadata. Reorganize the file format so exception handling+
17628         debug info is kept separate from normal method info. Create MonoJitInfo 
17629         structures for methods lazily.
17630
17631         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17632         loading metadata.
17633         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17634
17635         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17636
17637         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17638         in AOT code.
17639
17640         * mini.h: Bump AOT file version.
17641
17642 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17643
17644         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17645
17646 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17647
17648         * Makefile.am (check-local): Call semdel-wrapper.
17649
17650 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17651
17652         * mini-x86.c: Revert the last change as it seems to break the build..
17653
17654 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17655
17656         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17657         
17658         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17659
17660 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17661
17662         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17663         outside of the macro, so strange stuff doesn't happen with gcc4
17664         (NEW_AOTCONST_TOKEN): Likewise.
17665
17666 2005-06-28  Martin Baulig  <martin@ximian.com>
17667
17668         * mini.c (mini_class_is_system_array): New static method; use this
17669         instead of `klass->parent == mono_defaults.array_class' everywhere
17670         since this also works for the new generic array class.
17671
17672 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17673
17674         * inssel.brg: Remove warnings.
17675
17676 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini-ia64.c: Ongoing IA64 work.
17679
17680         * basic-float.cs: Add float->i1 conversion test.
17681
17682         * iltests.il: Add conv.u4 test.
17683
17684 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17685
17686         * inssel-long.brg: Fix bug caused by last change.
17687
17688 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17689
17690         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17691         BSDs.  Allows the x86 JIT to work on OSX86
17692
17693 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17696         u4->i8 conversion.
17697
17698         * mini-ia64.c: Ongoing IA64 work.
17699
17700 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17701
17702         * mini-ia64.c: Ongoing IA64 work.
17703
17704         * driver.c: Clean up jit_code_hash as well when using --regression.
17705
17706         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17707
17708         * basic-long.cs: Add tests for long->u4 conversion.
17709
17710 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17711
17712         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17713         that we do not depend on undefined C behavior: the order stuff
17714         gets evaluated within an expression. Fixes mono when compiled on
17715         GCC 4.
17716
17717 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17718
17719         * *-ia64.*: Ongoing IA64 work.
17720
17721         * aot.c: Lower memory usage while loading AOT methods.
17722
17723         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17724
17725         * mini.h: Bump AOT file format version.
17726
17727 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17728
17729         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17730
17731 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17732
17733         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17734         not on callee assembly). Fixed some comments.
17735
17736 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17737
17738         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17739         it gets proper disassembly.
17740         (emit_method_info): Remove some dead code.
17741
17742         * mini.c (mini_method_compile): Allways allocate the GOT var in
17743         mono_method_to_ir for emulating opcodes.
17744
17745 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17748         before freeing the code memory. Fixes #74990.
17749
17750         * objects.cs: Add regression test for #74992.
17751
17752         * liveness.c: Extend live ranges of arguments to the beginning of the
17753         method. Fixes #74992.
17754
17755         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17756         so it points into the faulting instruction.
17757
17758 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17759
17760         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17761
17762         * *-ia64.*: Ongoing IA64 work.
17763
17764         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17765
17766 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17769
17770         * *-ia64.*: Ongoing IA64 work.
17771
17772 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * basic-long.cs: Add tests for add/sub.ovf.
17775
17776         * basic.cs: Add tests for sub.ovf.
17777
17778         * *-ia64.*: Ongoing IA64 work.
17779
17780 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17781
17782         * *-ia64.*: Ongoing IA64 work.
17783
17784         * basic.cs: Add conv.ovf.i4.un test.
17785
17786 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17787
17788         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17789         
17790 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17791
17792         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17793
17794 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * *-ia64.*: Ongoing IA64 work.
17797
17798 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17799
17800         * trace.[ch]:
17801         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17802
17803 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17804
17805         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17806
17807 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17810
17811         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17812         of a call is callable by a near call.
17813
17814 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17815
17816         * mini-ia64.c: Ongoing IA64 work.
17817
17818 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * genmdesc.c: Make the generated array non-static.
17821
17822         * inssel-long.brg: Fix LSHR_IMM rule.
17823
17824         * *-ia64.*: Ongoing IA64 work.
17825
17826         * *-ia64.*: Ongoing IA64 work.
17827
17828 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17829
17830         * *-ia64.*: Ongoing IA64 work.
17831
17832         * *-ia64.*: Ongoing IA64 work.
17833         
17834         * mini-ia64.c: Ongoing IA64 work.
17835
17836         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17837
17838 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17841         
17842         * objects.cs basic-long.cs: Move some tests to objects.cs.
17843
17844 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17845
17846         * *-ia64.*: Ongoing IA64 work.
17847
17848         * iltests.il: Add a new test.
17849
17850         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17851         newobj. Fixes #75042.
17852
17853 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17854
17855         * *-ia64.*: Ongoing IA64 work.
17856         
17857         * *-ia64.*: Ongoing IA64 work.
17858         
17859         * *-ia64.*: Ongoing IA64 work.
17860
17861         * basic.cs objects.cs: Move tests accessing static variables as well.
17862
17863         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17864
17865 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17868
17869         * driver.c: Always print failed tests.
17870
17871         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17872         frame pointer.
17873
17874         * *ia64*: Ongoing IA64 work.
17875
17876 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * basic.cs: Add tests for add.ovf. Fix warnings.
17879
17880 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17881
17882         * driver.c (mono_main): Avoid crash if no argument is passed to
17883         --break;  Do not use g_error, but f_printf.   And fix all other
17884         ocurrences of the same crash.
17885
17886 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17887
17888         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17889         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17890         Fixes #74742.
17891
17892 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17893
17894         * *-ia64.*: Add beginnings of IA64 backend.
17895
17896         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17897
17898 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17899
17900         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17901         Fixes #74925.
17902
17903         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17904
17905         * mini-amd64.c: Fix a warning.
17906
17907 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17910         in float_neg. Fixes #74897.
17911
17912         * mini-amd64.c (emit_call): Fix another near call bug.
17913
17914 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17915
17916         * declsec.c: Keep the appdomain information in the structure. Added a 
17917         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17918         value gets overwritten).
17919         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17920         an MonoAppDomain member to MonoSecurityFrame.
17921         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17922         used in the stack walk. Now use a MonoArray which grow (double) when
17923         it gets full.
17924
17925 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17926
17927         * mini.c: Re-enabled runtime cleanup, since running threads should
17928         now properly stop when exiting.
17929
17930 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * mini-codegen.c: New file contaning the arch-independent local
17933         register allocator. Not used by any architectures yet.
17934
17935         * mini.h linear-scan.c: Merge some changes from the 
17936         mini-xp-local-regalloc branch.
17937
17938 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17939
17940         * mini-amd64.c (emit_call): Fix calls to native functions when the
17941         runtime is compiled as a shared library. Fixes #74756.
17942
17943         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17944         on a literal field. Fixes #74751.
17945
17946 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17947
17948         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17949
17950 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * objects.cs: Add missing null casting test.
17953
17954 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17957         in wrapper methods. Also rename 'address' variable to 'offset'.
17958
17959 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17960
17961         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17962         warnings.
17963         
17964         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17965
17966         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17967         work on windows.
17968
17969 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17970
17971         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17972
17973 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17974
17975         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17976         just the last bytes.
17977
17978 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17979
17980         * aot.c (mono_compile_assembly): Fix warning.
17981
17982         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17983         by the _MSC_VER stuff.
17984
17985 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17986
17987         * inssel-long.brg: Fix #74588.
17988
17989         * cpu-amd64.md: Fix #74591.
17990
17991         * iltests.il: Add new regression tests.
17992
17993 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17996         valuetype.
17997
17998 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18001
18002         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18003         from Bill Middleton <flashdict@gmail.com>.
18004
18005 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18006
18007         * arrays.cs: Add new regression test. Fix warnings.
18008
18009 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18010
18011         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18012         and leakage in CKFINITE.
18013
18014         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18015         this to a null op since it is called on amd64 too.
18016
18017         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18018
18019         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18020         body since this is not used on amd64.
18021         
18022         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18023
18024         * mini-amd64.c: Remove obsolete fixmes.
18025
18026         * mini.c (print_method_from_ip): Fix debugging support.
18027
18028 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18029
18030         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18031         so that expressions that don't give much gain are not reduced.
18032         * ssapre.h: Likewise.
18033
18034 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18035
18036         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18037
18038         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18039
18040         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18041
18042 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18045
18046         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18047
18048 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18049
18050         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18051         stack touching.
18052
18053         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18054
18055         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18056
18057         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18058
18059         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18060         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18061
18062         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18063
18064         * mini-x86.c: Fix up stack overflow handling.   
18065
18066         * exceptions.cs: Add new regression test.
18067
18068 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18069
18070         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18071         mono_jit_thread_attach.
18072
18073         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18074
18075 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18076
18077         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18078         avoid calling constructors using callvirt.
18079
18080         * inssel.brg: Fix #74073.
18081
18082 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18083
18084         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18085         compilation with non-GCC compilers.
18086         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18087         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18088
18089 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18090
18091         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18092         klass->interface_offsets (will likely fix bug#74073).
18093
18094 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18095
18096         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18097
18098 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18099
18100         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18101         to amd64_div_reg_size ().
18102         
18103         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18104
18105 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18108
18109 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18110
18111         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18112
18113 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18114
18115         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18116         
18117         * mini.c (mono_precompile_assembly): Load and precompile referenced
18118         assemblies as well. Fixes #74015.
18119
18120 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18121
18122         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18123
18124 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18125
18126         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18127         a lot of checks and (anyway) permissions cannot work until corlib is 
18128         loaded.
18129
18130 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18131
18132         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18133
18134 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18135
18136         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18137         calls (fixes bug#72824).
18138
18139 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18140
18141         * mini.c: fix tail recursion elimination (see test in bug#73936).
18142
18143 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18144
18145         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18146         some fp functions in sse2 mode.
18147
18148 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18149
18150         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18151
18152 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * mini.h mini.c: Add mono_get_jit_tls_key ().
18155
18156         * mini-x86.c: Enable fast TLS support on windows.
18157
18158 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18159
18160         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18161         * mini.c: Check for p/invoke method when generating code. If a
18162         p/invoke method, or it's class, isn't decorated with [Suppress
18163         UnmanagedCodeSecurity] then generate code to call System.Security.
18164         UnmanagedDemand (only if the security manager is active).
18165
18166 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18169         last change as it seems to cause strange crashes.
18170         
18171 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18172
18173         * *.c: handle unsafe function pointers where needed.
18174
18175 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * mini.c (mono_jit_free_method): Remove the fixme too.
18178
18179 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18180
18181         * mini.c: As discussed, make the code actually free the delegate
18182         thunk now, to enable the debugging of delegate problems, use
18183         MONO_DEBUG=1 when running Mono. 
18184
18185         This takes also care of parts of the leaks as seen by Joe.
18186
18187 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18190         thread_tls_offset calculation.
18191
18192 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18193
18194         * declsec.c: Reworked linkdemand checks for icall. The previous code
18195         was using the declaration code (untrusted) and didn't work as expected
18196         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18197         specific case.
18198
18199 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * iltests.il: Add new localloc test.
18202
18203         * mini-amd64.c: Handle large stack allocations the same way as on
18204         windows if stack overflow handling is working.
18205         
18206         * mini-amd64.c: Allocate the signal stack using mmap.
18207
18208         * mini.c (sigsegv_signal_handler): Fix reading of context.
18209
18210         * mini-exceptions.c: Fix up stack overflow handling.
18211
18212         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18213
18214         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18215
18216         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18217
18218         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18219
18220         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18221         tramp_init functions as they are no longer needed.
18222
18223 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18224
18225         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18226         
18227         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18228
18229         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18230         
18231         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18232         support that now.
18233
18234         * mini-ops.h: Add OP_LMUL_IMM.
18235
18236         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18237         long mul/div opcodes as intrinsic.
18238
18239         * mini-amd64.c (emit_call): Handle the case when the callee might be
18240         an AOT method.
18241
18242 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18243
18244         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18245         extra safe.
18246         
18247         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18248
18249         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18250
18251 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18252
18253         * mini.c (mono_codegen): Don't leak here, to help people running
18254         monogrind.
18255
18256 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18257
18258         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18259         conversions in sse2 mode.
18260
18261         * basic-float.cs: Add regression test.
18262         
18263         * mini-amd64.c: Reenable sse2.
18264
18265 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18268
18269 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18270
18271         * driver.c: Copyright text should include 2005.
18272         
18273 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * cpu-amd64.md (load_membase): Fix more max lengths.
18276
18277 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * cpu-amd64.md (load_membase): Fix max length.
18280
18281         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18282
18283         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18284
18285         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18286         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18287
18288         * basic-float.cs: Add rounding regression test.
18289
18290         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18291
18292 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18293
18294         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18295         structures in registers for pinvoke wrappers.
18296
18297 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18298
18299         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18300
18301 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18304         wrapper to mono_jit_thread_attach.
18305
18306         * mini.c (mini_jit_thread_attach): New jit icall.
18307
18308         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18309         native->managed wrappers.
18310
18311         * exceptions.cs: Add new regression test.
18312
18313         * mini.c (optimize_branches): Check regions in the cbranch to throw
18314         block case as well. Fixes #73242.
18315
18316 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18317
18318         * mini.c: thread safety fixes.
18319
18320 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18321
18322         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18323         patching stuff, since delegates use jump trampolines so there is
18324         no caller.
18325
18326         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18327         jump trampolines.
18328         
18329         * tramp-amd64.c: Fix build.
18330
18331         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18332         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18333
18334         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18335         Rename this to mono_arch....
18336         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18337
18338         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18339
18340         * mini-amd64.c (emit_call): If both the caller and the callee is
18341         guaranteed to have 32 bit addresses, emit a normal call.
18342
18343         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18344
18345         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18346         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18347         method_ptr inside delegates.
18348
18349 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18350
18351         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18352         invalidated. Fixes #73001.
18353
18354         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18355
18356         * mini-x86.c: Only use stdcall for pinvokes on windows.
18357
18358 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18359
18360         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18361         * mini-x86.c: remove unreliable __thread var offset detection,
18362         use the correct accessors and enable by default.
18363
18364 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * mini.c (mono_jit_free_method): Fix memory leak.
18367
18368 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18369
18370         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18371
18372 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18373
18374         * cpu-amd64.md: Fix lengths of atomic opcodes.
18375
18376 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18377
18378         * driver.c: try to not imply using ICU is any good.
18379
18380 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18381
18382         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18383         functions as inline ops.
18384
18385         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18386         some Interlocked functions as inline ops.
18387
18388         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18389
18390         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18391
18392         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18393
18394         * mini.c: Add support for OP_NOT_TAKEN.
18395
18396         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18397         structures in registers for pinvoke wrappers.
18398
18399         * mini-amd64.c: Fix warnings.
18400
18401 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18402
18403         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18404
18405         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18406
18407         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18408         address instead of loading the address from it.
18409
18410         * mini-x86.c: Add support for returning small structs in registers
18411         on Win32. Fixes part of #70864.
18412         
18413 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18414
18415         * trace.c (get_token): Improve error checking.
18416
18417 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18418
18419         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18420
18421 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18422  
18423         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18424         it can be reused for MonoClass.
18425         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18426         _LINKDEMAND.
18427
18428 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18429
18430         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18431         instead of a MonoReflectionMethod. The method information wasn't used
18432         when displaying SecurityException details (but will be now).
18433
18434 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18435
18436         * Makefile.am : windows build fix.
18437
18438 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * iltests.il: Add new regression test.
18441
18442         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18443         #72522.
18444
18445 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18446  
18447         * mini.c: Moved linkdemand check into helper function check_linkdemand
18448         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18449         LDFTN, LDVIRTFTN).
18450
18451 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18452
18453         * declsec.c: Added statistics counter for different kinds of 
18454         LinkDemands.
18455         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18456         (and commented) declaration.
18457         * mini.c: Added statistics counter for security Demand code 
18458         generation. Added display of security statistics.
18459
18460 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18463         Fix compilation errors under gcc-2.95.
18464
18465 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18466
18467         * mini.c, driver.c: Use the new jit trampoline hashtable
18468
18469 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18470
18471         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18472
18473 2005-02-11  Martin Baulig  <martin@ximian.com>
18474
18475         * debug-mini.c (mono_debug_close_method): Free the line number array.
18476
18477 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18480         icalls.
18481
18482         * mini.h: Bump AOT file format version. 
18483
18484 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18485
18486         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18487         APTC and P/Invoke.
18488         * declsec.h: Added macros to get/set lazyly initialized security 
18489         informations about assemblies. Added new enum for different type of
18490         possible LinkDemand violation. Added function to check LinkDemands.
18491         * mini.h: Added a field to MonoCompile to hold any security violation
18492         detected when JITting a method (so it can be thrown later).
18493         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18494         and CEE_CALLVIRT. Added code to throw exception at the end of
18495         mini_method_compile (note: the exception is unhandled right now).
18496
18497 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18498
18499         * mini.c, jit-icalls.c: use the managed implementation of
18500         memset for initobj and memset, to avoid managed <-> unmanaged
18501         transitions.
18502
18503 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18506         optimization if it would need a GOT var.
18507
18508         * basic.cs: Add tests for constant propagation and switch statements.
18509
18510         * ssa.c: Fix out-of-range constant propagation and switch statements.
18511
18512 2005-02-09    <vargaz@freemail.hu>
18513
18514         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18515
18516 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18517
18518         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18519
18520 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18521
18522         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18523
18524 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18525
18526         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18527         arithmetic operations.
18528
18529 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18530
18531         * mini-ppc.c: add a workaround for broken user code that
18532         DllImports vararg functions with non-vararg signatures.
18533
18534 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18535
18536         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18537         meaningfull error message for assemblies written in Managed C++.
18538
18539         * tramp-amd64.c mini-amd64.h: Add support for 
18540         create_trampoline_from_token ().
18541
18542         * aot.c mini-x86.c abcremoval.c: Applied patch from
18543         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18544
18545 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18548         which takes a MonoImage/token as parameter instead of a MonoMethod.
18549
18550         * aot.c: Use the new trampoline for initializing vtables.
18551
18552         * aot.c: Add support for ldfld/stfld_remote wrappers.
18553
18554         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18555         rules for compare <MEM>, IMM.
18556
18557         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18558
18559         * aot.c: Handle inherited finalizers correctly.
18560
18561 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18562
18563         * inssel.brg (stmt): Add a missing _setup_... ().
18564
18565         * aot.c: Save some parts of the class state to the AOT file and use it
18566         to recompute that state when a class is initialized.
18567
18568         * mini.c: Install AOT hooks into the runtime.
18569
18570         * mini.h: Bump AOT file format version.
18571         
18572         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18573         Fixes #72148.
18574
18575         * iltests.il: Add new test.
18576
18577 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18578
18579         * mini.c: fix typo.
18580
18581 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18582
18583         * mini.c: setup the statistical profiler in the thread attach
18584         callback to cope with the new single thread code.
18585
18586 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18587
18588         * mini-ppc.c: ensure we have enough room for the profiler
18589         calls (fixed bug#72084).
18590
18591 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18592
18593         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18594         it.
18595
18596 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18597
18598         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18599
18600 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18601
18602         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18603         to succesfully execute parrotbench).
18604         * ssapre.h: Likewise.
18605
18606 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18607
18608         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18609         variable for stores to method arguments (fixes a SSAPRE issue).
18610
18611 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18612
18613         * mini.c: handle value types in dup, fixes gen-112.cs.
18614
18615 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18616
18617         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18618         sequence for calls in dynamic methods to avoid thunks.
18619
18620 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18621
18622         * mini.c: correctly remove dynamic methods from the hashtable.
18623
18624 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18625
18626         * driver.c: Disabled SSAPRE until fix the bug that appears
18627         in IronPython's parrotbench.
18628
18629 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18632
18633         * mini.c (mono_method_to_ir): Revert the previous change.
18634         
18635         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18636         when AOT compiling.
18637
18638         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18639         mono_jit_info_table_find () etc. when running under valgrind.
18640
18641         * inssel.brg: Fix warnings.
18642
18643         * mini-exceptions.c: Fix warnings.
18644
18645 2005-01-31  Martin Baulig  <martin@ximian.com>
18646
18647         * driver.c (compile_all_methods_thread_main): Don't try to compile
18648         generic methods or anything which has type parameters.
18649
18650 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18653
18654         * TestDriver.cs: Add --verbose flags.
18655
18656         * graph.c ssa.c: Fix 64 bit warnings.
18657         
18658         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18659         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18660         Fix 64 bit warnings.
18661
18662         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18663         variable not spotted by gcc.
18664         
18665         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18666         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18667         X86_COMPARE_MEMBASE opcodes.
18668
18669         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18670
18671 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18672
18673         * *: MonoMethod->signature might be NULL now. You *MUST* use
18674         mono_method_signature.
18675
18676 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18677
18678         * driver.c (compile_all_methods_thread_main): Compile the methods
18679         without invoking cctors.
18680
18681 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18682
18683         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18684         * basic-calls.cs: test for the above.
18685
18686 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18687
18688         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18689         MonoJitInfo changes.
18690
18691 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18694         eagerly if it contains dynamic methods.
18695         
18696         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18697
18698         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18699         trace, it is now computed by an icall from trace_ips.
18700         
18701         * mini-exceptions.c: Fix a warning.
18702
18703 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18704
18705         * mini-exceptions.c: don't bother getting stack trace info if
18706         it's not going to be used.
18707
18708 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18709
18710         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18711         ssapre-mini-ops.h.
18712
18713 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18716
18717         * aot.c: Avoid calling mono_method_get_header () if not needed.
18718
18719         * mini.h: Bump AOT file format version.
18720         
18721         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18722
18723         * mini.c (mono_print_tree): Print more info for calls.
18724
18725 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18726
18727         * declsec.h: Remove warning by adding missing include for marshal.h
18728
18729 2005-01-26  Martin Baulig  <martin@ximian.com>
18730
18731         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18732         `ip' twice.
18733
18734 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18737         flags.
18738
18739         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18740
18741         * aot.c (mono_compile_assembly): Fix a warning.
18742
18743 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18744
18745         * declsec.c: Look for security attributes on the original MonoMethod 
18746         (and not the wrapped one). This fix permissions on icalls.
18747
18748 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18749
18750         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18751
18752         * mini.c (mono_allocate_stack_slots): Add a fixme.
18753
18754         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18755
18756 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18757
18758         * inssel.brg: optimize casts of sealed types (more
18759         optimizations waiting for fixes in remoting).
18760
18761 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18762
18763         * inssel.brg (stmt): Add another dummy rule.
18764
18765         * driver.c: Fix warnings.
18766
18767         * driver.c (mono_main): If running under valgrind, instruct glib to use
18768         the system allocation functions so valgrind can track the memory
18769         allocated by the g_... functions.
18770
18771         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18772
18773         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18774
18775         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18776
18777         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18778         variables in try regions.
18779
18780         * mini.c (mini_method_compile): Don't disable optimizations on large
18781         methods when AOT compiling.
18782
18783         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18784         allocate stack slots. Not yet used.
18785
18786 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18787
18788         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18789
18790 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18791
18792         * mini-ppc.c: make the branch info relative as the code
18793         buffer can be reallocated.
18794
18795 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18796
18797         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18798         * driver.c: Removed the AOT/security restriction. Now initialize the
18799         security manager (in metadata) if --security is used.
18800         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18801         rather than the pointer to declarative security, when AOT is used.
18802
18803 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18804
18805         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18806         basic blocks, reduced intrinsic exception throwing code size.
18807
18808 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18809
18810         * driver.c (mini_usage): Reorder the usage screen.
18811
18812 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * mini.c (mono_resolve_patch_target): Fix warning.
18815
18816 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18817
18818         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18819         previous patch.
18820
18821         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18822
18823         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18824         breaks the amd64 build.
18825
18826         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18827         register allocation. Fixes #71454.
18828
18829         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18830
18831         * arrays.cs: Add new regression test.   
18832
18833 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18834
18835         * ssapre.c: Turned usage of snprintf to GString.
18836         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18837         (I left it on by mistake in my previous commit).
18838
18839 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18840
18841         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18842         on cond branch optimization (fixes bug# 71515).
18843
18844 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18845
18846         * abcremoval.c: Fixed bug 71062.
18847         * abcremoval.h: Likewise.
18848
18849 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18850
18851         * mini.c: Added a new functionality to optimize_branches, the removal
18852         of useless basic blocks, and fixed some problem in the removal of
18853         critical edges; some utility functions added for both purposes.
18854         * ssapre.c: Added complex expression support, and fixed bug 70637.
18855         * ssapre.h: Likewise.
18856         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18857         enabled in SSAPRE.
18858         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18859         * driver.c: Re-enabled SSAPRE.
18860
18861 2005-01-19  Martin Baulig  <martin@ximian.com>
18862
18863         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18864         the result of mono_get_method_constrained().
18865
18866 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18867
18868         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18869         manager.
18870
18871 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18872
18873         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18874         be detected.  Fixes #59296.
18875
18876 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18877
18878         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18879         which can happen. Fixes #71361.
18880
18881 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18884         manager.
18885
18886 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18887
18888         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18889         appdomain-unload.exe to fail.
18890         
18891         * mini.c: Fix some memory leaks.
18892
18893 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18894
18895         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18896         Fixed bug and sped up some codepaths.
18897
18898 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18899
18900         * mini.c: Fix some memory leaks.
18901
18902         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18903         conversion.
18904
18905         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18906
18907         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18908         #71320.
18909
18910         * iltests.il: Add regression test for #71320.
18911
18912 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * mini.c (mono_codegen): Fix installation of profiler hooks.
18915
18916         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18917
18918 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18919
18920         * mini.h, mini.c, cfold.c: optimize access to enum
18921         readonly fields, too. Eval conditional branches if possible
18922         to perform unreachable code removal in more cases.
18923
18924 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18925
18926         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18927
18928         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18929         code manager.
18930
18931         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18932         WinXP DEP. Fixes #71244.
18933
18934 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18937
18938 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18939
18940         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18941
18942 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18943
18944         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18945         changes.
18946
18947         * mini.h: Bump AOT version.
18948
18949         * mini.h (MonoCompile): Change exvar to a hash table.
18950
18951         * mini.c: Allocate a separate exvar for each handler block.
18952
18953         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18954
18955         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18956         ex var with the pending exception and only throw if the two are equal.
18957         Fixes #68552.
18958         
18959         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18960
18961         * mini-x86.c: Fix warnings.
18962
18963         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18964         used by all the ports now.
18965
18966         * aot.c: Add write-symbols and save-temps options.
18967
18968 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18971
18972 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18973
18974         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18975         operations.
18976
18977         * tramp-s390.c: Check vtable slot belongs to the domain.
18978
18979         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18980         as per other platforms.
18981
18982         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18983
18984 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18985
18986         * driver.c: we don't run the Main() code in a subthread anymore.
18987
18988 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18989
18990         * mini.c: added experimental rtc support in the statistical
18991         profiler: if the user has the permission, more accurate statistics
18992         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18993         The MONO_RTC value must be restricted to what the linux rtc allows:
18994         power of two from 64 to 8192 Hz.
18995
18996 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18997
18998         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18999
19000 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19001
19002         * mini-ppc.c: better icache flush for smp.
19003
19004 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19007
19008         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19009         amd64 port, not yet used.
19010
19011 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19012
19013         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19014         a struct type.
19015
19016 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19017
19018         * driver.c: Added --security option to activate the security manager.
19019         Right now this will allow code generation for declarative demands and
19020         is disabled when AOT is specified.
19021         * mini.c: Add code generation for declarative security demands.
19022         * mini.h: Add mono_use_security_manager as an extern gboolean.
19023
19024 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19025
19026         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19027         emitting more dense assembly code.
19028
19029         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19030         exception throwing stuff.
19031
19032 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19033
19034         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19035         dead code.
19036
19037         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19038         left in by mistake.
19039
19040         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19041         fixed.
19042
19043         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19044
19045         * tramp-*.c: Only patch vtable slots if the object is in the current
19046         domain. Fixes appdomain-unload.exe.
19047
19048         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19049         
19050         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19051         x86 branch.
19052
19053 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * mini.c (reverse_branch_op): New helper function.
19056
19057         * mini.c (optimize_branches): Run the new optimization only on 
19058         platforms which support it. Also reverse all kinds of branches.
19059
19060         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19061
19062         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19063         a throw statement.
19064
19065         * mini.c (optimize_branches): Reverse not-equals branches if the false
19066         bblock is a throw. This happens a lot of time with argument checking in
19067         corlib.
19068
19069         * mini.c (mono_codegen): Add support for placing basic blocks after
19070         the function epilogue.
19071
19072         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19073         function epilogue.
19074         
19075 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19076
19077         * mini.c (setup_stat_profiler): Only set this up if the platform
19078         supports ITIMER_PROF.
19079
19080 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19081
19082         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19083         previous patch.
19084
19085         * inssel.brg: Fix a warning.
19086
19087 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19088
19089         * mini.c: added support for statistical profiler 
19090         (run with: --profile=default:stat).
19091
19092 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19093
19094         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19095
19096         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19097
19098         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19099         related to global registers from the amd64 port.
19100
19101 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19104
19105         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19106         with global registers.
19107         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19108
19109         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19110
19111 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * debug-mini.c (encode_value): Fix off-by-one.
19114
19115         * aot.c (encode_value): Likewise.
19116
19117         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19118
19119 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19122         AOT.
19123
19124         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19125         
19126         * aot.c (emit_method_info): Increase size of temp buffer.
19127
19128         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19129         the AOT case.
19130
19131 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19132
19133         * aot.c (emit_method_info): Fix build.
19134         
19135         * aot.c: Further rework of the AOT file format to reduce the size of
19136         the method info data.
19137
19138         * mini.h: Bump AOT file format version.
19139
19140 2004-12-27  Martin Baulig  <martin@ximian.com>
19141
19142         * mini.c (mini_get_method): New static method; call
19143         mono_get_method_full() and mono_get_inflated_method().
19144         (mono_method_to_ir): Use mini_get_method() instead of
19145         mono_get_method_full(). 
19146
19147 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19148
19149         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19150
19151 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19154
19155         * inssel-amd64.brg: Add some optimization rules.
19156
19157 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19158
19159         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19160         standard not GC'd stuff is fine.
19161
19162 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19163
19164         * aot.c: Rework the AOT file format to get rid of most of the global
19165         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19166
19167         * mini.h: Bump AOT file format version.
19168         
19169 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * mini.h: Bump AOT file format version.
19172
19173         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19174         address is inside a GOT.
19175
19176         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19177
19178         * cpu-pentium.md: Increase the maximum size of some instructions which
19179         might involve a got access.
19180         
19181         * mini.c (get_method_from_ip): Another debug helper function.
19182
19183         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19184         when got var accesses are created during the decompose phase.
19185
19186         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19187
19188         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19189         argument mini_compile_method and to MonoCompile, and use this to
19190         determine whenever a given method is compiled for AOT. This allows the
19191         other methods compiled during AOT compilation to be free of AOT stuff,
19192         so the backends does not need to add special support for them by
19193         creating a fake GOT etc.
19194
19195         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19196         longer needed.
19197
19198 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19199
19200         * mini.c (mono_method_to_ir): It turns out that some of the
19201         x-appdomain wrappers are lax with types, so just ignore this for
19202         all wrappers.
19203
19204         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19205         at the vtable->klass. If it is non-shared code we can just use the
19206         vtable.
19207
19208 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19209
19210         * mini-ppc.c: access MonoDomain from tls, too.
19211
19212 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19213
19214         * declsec.c: Removed unused variable (and related warning ;-)
19215
19216 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19217
19218         * iltests.il: New test for LDELEMA on an array of ref types.
19219
19220         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19221         all ldelema's on reftypes.
19222         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19223         it was the wrong place to put it.
19224
19225         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19226         register to pop to make this cleaner, at the request of Paolo.
19227
19228 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19229
19230         * mini-ops.h (OP_GETHASHCODE): New op.
19231
19232         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19233
19234         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19235         operation.
19236
19237         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19238         by 25%.
19239         
19240         * mini-x86.c (mono_arch_output_basic_block): Rather than
19241
19242         add ebp, 4
19243
19244         Emit
19245
19246         pop edx
19247
19248         The first is 3 bytes while the second is 1. This saves 36 kb on
19249         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19250         see a small boost because of icache locality.
19251
19252         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19253
19254 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19255
19256         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19257         started code sharing with the generic code.
19258
19259 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19260
19261         * mini-ppc.c, cpu-g4.md: added code for direct access to
19262         tls data slots.
19263
19264 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19265
19266         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19267          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19268         to OP_TLS_GET.
19269
19270 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19271
19272         * declsec.c|h: Added functions to cache the declarative stack modifiers
19273         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19274         structure.
19275         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19276         created. Register internal calls for System.Security.SecurityFrame::
19277         _GetSecurityFrame and _GetSecurityStack.
19278         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19279         the definitions for the new stack walk/callback mechanism.
19280         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19281         first security frame for LinkDemands and InheritanceDemands) and
19282         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19283         from lupus.
19284         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19285         walk initialization (lupus).
19286
19287 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19288
19289         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19290         idiom.
19291         (handle_loaded_temps): Do not create a temporary variable for
19292         things that we know are temps. They will never be modified.
19293         (mono_spill_call): Set MONO_INST_IS_TEMP
19294         (mono_emulate_opcode): ditto
19295         (emit_tree): ditto
19296         (mono_method_to_ir.CEE_DUP): ditto
19297
19298 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19299
19300         * mini.c (type_to_eval_stack_type): Make this handle the void type
19301         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19302         (emit_tree): use ip_in_bb to special case some common idioms
19303         Update all callers to pass in the IP.
19304         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19305
19306         This gives us a nice 2% speedup in mcs bootstrap.
19307
19308         * mini-x86.c (peephole_pass): Peephole pass to make
19309         mov  [foo], eax
19310         push [foo]
19311
19312         into
19313
19314         mov [foo], eax
19315         push eax
19316
19317         * mini.c (ip_in_bb): new method.
19318         (mono_method_to_ir): use this method rather than doing the hash
19319         lookup ourselves.
19320
19321         * linear-scan.c (mono_linear_scan): When expiring actives, you
19322         don't need to keep around variables that expire on this
19323         instruction. This makes it so that:
19324              a = b + 1
19325         will turn into:
19326              store (ebx add (ebx, 1))
19327         which will become
19328              add ebx, 1
19329
19330 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19333         combination to avoid doing two copies. Fix up problems with previous
19334         patch.
19335
19336         * mini.c: Fix 64 bit warnings.
19337
19338         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19339
19340 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19341
19342         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19343         changes from the x86 code.
19344
19345         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19346
19347 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19348
19349         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19350         throwing code to reduce its size, unify the AOT and non-aot code and 
19351         get rid of relocations in the AOT case.
19352
19353         * mini-x86.h mini.c exceptions-x86.c 
19354         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19355         raise corlib exceptions which doesn't require relocations in the 
19356         caller.
19357
19358         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19359
19360 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19361
19362         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19363         needed.
19364
19365         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19366         in the AOT case.
19367
19368 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19369
19370         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19371         with add function when used from Inc/dec atomic 
19372         functions. Re-enabled optimization on x86.
19373         * mini-ops.h: renamed atomic_add functions to
19374         allow _add to match the Interlocked::Add and
19375         _add_next to match Interlocked::Inc/Dec.
19376
19377 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19378
19379         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19380         linking of BBs to the end BB, and enabled SSAPRE also with
19381         consprop and copyprop (which was prevented by that bug).
19382
19383 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19384
19385         * mini-x86.c: disabling the Interlocked optimizing code. 
19386
19387 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19388
19389         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19390         file version check.
19391         
19392 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19393
19394         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19395         interlocked optimization due lack of support on x86, rewrote 
19396         exchange to take into account that base may be in eax.
19397         
19398         xsp works again; activated Interlocked optimizing code.
19399         
19400 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19403
19404 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini-ops.h: Add new opcodes.
19407
19408         * mini.h: Add new patch types. Add got_var to MonoCompile.
19409
19410         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19411         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19412         make it work with all kinds of patchable code.
19413
19414         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19415         address of the GOT, and referencing entries in the GOT.
19416
19417         * mini.c: Add code to load the GOT address if needed by an opcode.
19418
19419         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19420         independent AOT code on the x86 using an elf-style Global Offset Table.
19421
19422 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19423
19424         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19425
19426 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19427
19428         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19429         when running xsp.
19430
19431 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19432
19433         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19434         of Interlocked:Increment/Decrement/Add as inline ops.
19435         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19436
19437 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19438
19439         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19440         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19441
19442 2004-12-12  Duncan Mak  <duncan@ximian.com>
19443
19444         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19445         again. `patch_info->table_size' is no longer valid after Zoltan's
19446         commit #37636.
19447
19448 2004-12-12  Martin Baulig  <martin@ximian.com>
19449
19450         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19451         if we are the "real" method, ie. not an inlined method inside it.
19452
19453 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19454
19455         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19456         before we look in the special fields table. This fixes
19457         ../tests/thread-static-init.cs.
19458
19459 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19460
19461         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19462         for Array get_Rank and get_Length. Fixes bug #70465.
19463
19464 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19467         separate structure to reduce the size of MonoJumpInfo.
19468
19469 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19470
19471         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19472
19473 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19474
19475         * mini.c (mini_get_inst_for_method): Changed to allow ports
19476         to return a MonoInst instead of opcode 
19477         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19478         
19479         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19480         Allow ports to return a created MonoInst instead of op-code, will enable
19481         new optimizations.
19482         (renamed mini_get_opcode_for_method to better reflected the functionality)
19483
19484 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19487
19488 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19491         Fixes #69985.
19492
19493 2004-12-08  Martin Baulig  <martin@ximian.com>
19494
19495         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19496         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19497
19498 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19501         correctly.
19502
19503         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19504         arithmetic.
19505
19506 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19507
19508         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19509
19510 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19511
19512         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19513         bug introduced by the previous patch.
19514
19515 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19516
19517         * mini-ppc.c, objectc.cs: handle large structs passed by value
19518         (fixes bug #69972).
19519
19520 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19521
19522         * mini-ppc.c: OP_ARGLIST implementation from
19523         Geoff Norton  <gnorton@customerdna.com>.
19524
19525 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19526
19527         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19528         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19529
19530 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19531
19532         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19533
19534 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19535
19536         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19537         support.
19538
19539 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * mini-sparc.c: Zero out localled-ed memory.
19542
19543         * iltests.il: Add tests for zeroing out localloc-ed memory.
19544
19545 2004-12-04  Martin Baulig  <martin@ximian.com>
19546
19547         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19548         mono_method_get_signature_full().       
19549
19550 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19551
19552         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19553         and some utility functions (always for SSAPRE), integrated SSAPRE.
19554         * mini.h: Likewise.
19555         * driver.c: Added ssapre option.
19556         * ssa.c: Small fix on OP_ARG handling.
19557         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19558         * Makefile.am: Likewise.
19559
19560 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19561
19562         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19563         now in the xp code.
19564
19565         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19566         icall.
19567
19568 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19569
19570         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19571         
19572         * cpu-s390.md : Increase instruction length of oparglist.
19573
19574         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19575
19576 2004-11-30  Martin Baulig  <martin@ximian.com>
19577
19578         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19579         virtual generic methods.  We call a special helper_compile_generic_method()
19580         icall to retrieve the method from the vtable, inflate and compile
19581         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19582
19583         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19584
19585 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19588
19589 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19590
19591         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19592         Fixes #69929.
19593
19594 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19595
19596         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19597         platforms with PIC aot.
19598
19599 2004-11-28  Martin Baulig  <martin@ximian.com>
19600
19601         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19602         Fixes gen-112.cs.
19603
19604 2004-11-28  Martin Baulig  <martin@ximian.com>
19605
19606         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19607         the result of mono_type_get_underlying_type() to check whether
19608         we're byref.
19609
19610 2004-11-26  Martin Baulig  <martin@ximian.com>
19611
19612         * mini.c
19613         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19614         in the g_assert().
19615
19616 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19619         the same way as the other arguments so they won't get clobbered.
19620
19621         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19622         calls through R11 since it is clobbered by the trampoline code.
19623
19624 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19625
19626         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19627         pick up in-tree mscorlib.dll.
19628
19629 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19632
19633         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19634         runtime data/code are now stored in a table similar to the GOT in ELF. 
19635         This allows the code itself to be position independent.
19636
19637         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19638         loading changes.
19639
19640         * aot.c: Attach ELF type (object/function) directives to all global
19641         symbols.
19642
19643         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19644
19645         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19646
19647         * mini-amd64.h: Turn on PIC AOT code.
19648
19649         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19650         returning the offset within an OP_AOTCONST instruction where the GOT
19651         offset needs to be added.
19652
19653         * mini.h: Bump AOT file format version.
19654
19655 2004-11-25  Martin Baulig  <martin@ximian.com>
19656
19657         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19658         uninflated generic methods.
19659
19660 2004-11-25  Martin Baulig  <martin@ximian.com>
19661
19662         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19663
19664 2004-11-24  Martin Baulig  <martin@ximian.com>
19665
19666         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19667         original klass (this only applies for generic instances).
19668
19669 2004-11-24  Martin Baulig  <martin@ximian.com>
19670
19671         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19672         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19673         that array).
19674
19675 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19678         localloc. Fixes #69678.
19679
19680         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19681         
19682 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19683
19684         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19685         used SSE registers on pinvoke calls. Fixes #69774.
19686
19687 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19688
19689         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19690         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19691
19692 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19693
19694         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19695         Refer directly to the mcs/ tree.
19696
19697 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19698
19699         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19700         Check if a trampoline for a synchronized method is required. 
19701
19702 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19703
19704         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19705         with localloc if needed. Throe arithmetric exception in
19706         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19707         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19708
19709 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19710
19711         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19712         types before switching on type.  Fixes #69622.
19713
19714 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19715
19716         * Makefile.am (check-local): New.  Integrate into 'make check'.
19717         (MCS,RUNTIME): Define using in-tree mono and mcs.
19718         (ILASM): New.
19719         (%.exe): Use $(ILASM).
19720
19721 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19722
19723         * mini-ppc.c: adjust initial prolog size (bug #69691).
19724
19725 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19726
19727         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19728         #69664.
19729
19730 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19731
19732         * Makefile.am (clean-local): Rename from 'clean'.
19733
19734 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19735
19736         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19737         to mono_arch_is_int_overflow. 
19738         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19739         SIGFPE events.
19740
19741 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19742
19743         * declsec.c|h: New files to support declarative security attributes.
19744         Added function to check if a method has (applicable) security.
19745         * mini.c|h: Add check for declarative security attributes in
19746         mono_method_check_inlining.
19747         * Makefile.am: Added declsec.c and declsec.h to the build.
19748
19749 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19750
19751         * mini.c, mini.h: update to keep dynamic code info per-domain.
19752
19753 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19756         (mini_init): Get rid of it from here too.
19757
19758 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19759
19760         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19761         implemented OP_RETHROW (patch by Geoff Norton
19762         <gnorton@customerdna.com>).
19763
19764 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19765
19766         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19767         between appdomains.  Fixes appdomain-unload on PPC.
19768
19769 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19770
19771         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19772         mini-exceptions.c: handle the new wrapper types.
19773         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19774         token value as a MonoClass* when compiling a wrapper.
19775         mono_jit_create_remoting_trampoline now takes an additional
19776         MonoRemotingTarget parameter.
19777         
19778 2004-11-10  Martin Baulig  <martin@localhost>
19779
19780         * mini.c (mono_method_to_ir): Use `generic_container->context'
19781         rather than creating a new one.
19782
19783 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19784
19785         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19786
19787         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19788
19789 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19792         the experimental aot cache stuff.
19793
19794 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19795
19796         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19797         mini-exceptions.c: update to exception clause structure changes.
19798
19799 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * exceptions-x86.c (throw_exception): Fix warnings.
19802
19803         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19804         for OP_RETHROW.
19805
19806 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * exceptions-sparc.c (get_throw_exception): Really fix this.
19809
19810 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19811
19812         * tramp-*.c: we no longer support icalls without wrappers, so
19813         a bit of code can be removed here
19814
19815 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19818         patch.
19819
19820         * cpu-sparc.md: Add op_rethrow.
19821
19822         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19823
19824         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19825
19826         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19827         * mini-ops.h: Add OP_RETHROW.
19828
19829         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19830
19831         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19832
19833 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19834         
19835         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19836         Makes the output much easier to read
19837
19838 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19839
19840         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19841         prevents another huge leak when compiling with ssa. Secondly, the
19842         performance of doing this rather than freeing the lists is much
19843         better. GList does a lock every time you allocate a list link,
19844         so that it can use a memory pool. So, it is better to just use
19845         a memory pool of our own.
19846         
19847         * ssa.c, linear-scan.c: replace g_list_remove_link with
19848         g_list_delete.  The remove one does not free the GList, so we were
19849         leaking memory. On -O=all --compile-all with corlib, this cut down
19850         3 MB of allocations.
19851
19852 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19855
19856         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19857
19858         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19859         into a new function mono_create_jit_trampoline ().
19860
19861 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * trace.c (get_spec): Allow tracing of classes without a namespace.
19864
19865 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19866
19867         * mini.c: Fix pointer overwrite in mini_method_compile.
19868
19869 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19870
19871         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19872         The darwin ABI needs some special handling for 1 and 2 byte structs
19873         Lets use lbz/lhz instead of lwz everywhere.
19874         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19875         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19876         Use stb/sth for the former, and put the latter always on stack instead of in
19877         argument registers.
19878
19879 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * trace.c (is_filenamechar): Add '_'.
19882
19883 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19884
19885         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19886
19887         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19888
19889 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19892         depends on libmonogc. Fixes #68805.
19893
19894 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19895
19896         * mini.c (mono_jit_free_method): Provide extra information for
19897         this error.  Currently this leaks, but will be turned into a
19898         developer option in the future.
19899
19900 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19903
19904 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19907         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19908         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19909
19910 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19913         trampolines for AOT code.
19914
19915 2004-10-22    <vargaz@freemail.hu>
19916
19917         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19918         constructed types. Fixes #68136.
19919
19920 2004-10-21  Martin Baulig  <martin@ximian.com>
19921
19922         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19923         if it returns true, unwind the stack to the call instruction.
19924
19925 2004-10-21    <vargaz@freemail.hu>
19926
19927         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19928
19929         * mini.h: Bump AOT version number.
19930
19931         * objects.cs: Add another test for unbox trampolines.
19932
19933         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19934         valuetype methods.
19935
19936 2004-10-20    <vargaz@freemail.hu>
19937
19938         * driver.c: Add SHARED to the set of optimizations tested.
19939
19940         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19941
19942         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19943         used by CEE_NEWARR.
19944
19945         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19946
19947 2004-10-20  Martin Baulig  <martin@ximian.com>
19948
19949         * mini-exceptions.c (mono_handle_exception): Call
19950         mono_debugger_handle_exception() to tell the debugger about
19951         catch/finally clauses.
19952
19953 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19956
19957         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19958         #68447.
19959
19960 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19961
19962         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19963         methods as their native size, fixed bug #57543, #57545.
19964         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19965         This saves a temporary register and mullw call down into 1 (minor perf
19966         increase for cases like sum = sum * 5;  This use to translate into:
19967             li r11,5
19968             mullw r28,r28,r11
19969         It now translates to
19970             mulli r28,r28,5
19971
19972 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19975         #68388.
19976
19977 2004-10-11  Martin Baulig  <martin@ximian.com>
19978
19979         * mini.c (mono_method_to_ir): If we're a generic method, get the
19980         MonoGenericContainer from our MonoMethodNormal and create a
19981         MonoGenericContext from it.
19982
19983 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19984
19985         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19986
19987         * basic-long.cs: Add test for checked i8->i2 cast.
19988
19989 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19990
19991         * inssel-ppc.brg: added a couple of speedup rules.
19992
19993 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19994
19995         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19996         to speed up rebuilds.
19997
19998 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19999
20000         * mini-s390.c: Minor fix to OP_OR_IMM.
20001
20002 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20005         better. Fixes appdomain-unload.exe on sparc.
20006
20007 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20008
20009         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20010         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20011         see bug 67324.
20012
20013 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20014
20015         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20016
20017 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20018
20019         * mini.c: Always generate a field read/write wrapper for members
20020         of the class MarshalByRefObject since the actual instance could
20021         be a CBO.
20022
20023 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20024
20025         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20026
20027 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * driver.c mini.h trace.c: Move the setting of the main assembly into
20030         a separate function called mono_trace_set_assembly () and call it after
20031         actually loading the main assembly. Fixes #66872.
20032
20033 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20036         using the code manager.
20037
20038 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20041
20042 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * cpu-amd64.md: Fix bug in previous patch.
20045         
20046         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20047         #66650.
20048
20049 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20050
20051         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20052         mini-exceptions.c: updates for changed stack walk interface.
20053
20054 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20055
20056         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20057
20058 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20061
20062 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20063
20064         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20065         since assemblies can't be unloaded.
20066         
20067 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * cpu-amd64.md: Fix more instruction lengths.
20070
20071         * cpu-amd64.md: Fix lengths of some instructions.
20072
20073 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20074
20075         * inssel.brg: Make the array ldelema check aot friendly.
20076
20077 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20078
20079         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20080
20081         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20082
20083 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini-x86.c: Fix build.
20086
20087         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20088         mono_type_get_underlying_type () helper function to simplify code.
20089         
20090 2004-09-09  Martin Baulig  <martin@ximian.com>
20091
20092         * mini-amd64.c: Don't access `type->data.klass' directly, call
20093         mono_class_from_mono_type() instead since the type may be a
20094         generic instance.
20095
20096 2004-09-09  Martin Baulig  <martin@ximian.com>
20097
20098         * mini-amd64.c (get_call_info): Fix support for generic instances.
20099         (add_valuetype): Use mono_class_from_mono_type() to get the class
20100         since we can be a generic instance.
20101
20102 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20103
20104         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20105
20106 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20107
20108         * liveness.c: reset spill costs on each scan: bug 62107
20109
20110 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20111
20112         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20113         unnecessary line that doesn't compile
20114
20115 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20118         trampolines, make them call an error function so people can fix their
20119         code.
20120
20121 2004-09-06  Martin Baulig  <martin@ximian.com>
20122
20123         * mini.c (mono_method_to_ir): When initializing locals, handle a
20124         generic instances like a valuetype if it's a valuetype and like a
20125         class if it's a class.
20126
20127 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20128
20129         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20130         stack. Fixes #64674.
20131
20132         * exceptions.cs: Add test for unwinding of call arguments.
20133
20134 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20135
20136         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20137         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20138         set the carry/borrow flag). The sparc and s390 implementations
20139         can now use optimized versions (and simplify the code). ppc bugfixes.
20140
20141 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20144
20145 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * inssel-amd64.brg: Remove leftover 32 bit rule.
20148
20149         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20150
20151 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20154         mono_arch_find_jit_info functions into a new function. Fix a memory
20155         leak.
20156
20157         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20158         refactored code.
20159         
20160 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20163         as well.
20164         
20165         * exceptions.cs: Add array size tests.
20166
20167         * mini.c: Allocate a separate icall wrapper for each arity of 
20168         mono_array_new_va. Fixes #59509.
20169
20170         * exceptions.cs: Add testcase for 64578.
20171
20172         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20173
20174         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20175         
20176 2004-09-02  Martin Baulig  <martin@ximian.com>
20177
20178         * mini.c (mono_method_to_ir): When initializing the locals, call
20179         handle_initobj() on the generic instance itself, not its
20180         underlying type.
20181
20182 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20183
20184         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20185         MonoJitInfo for dynamic methods.
20186
20187         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20188
20189         * mini.c: Add support for freeing JIT data for dynamic methods.
20190         
20191 2004-09-01  Martin Baulig  <martin@ximian.com>
20192
20193         * mini-x86.c (is_regsize_var): Added support for generic
20194         instances.
20195         (mono_arch_emit_prolog): Make this compile again, use
20196         `x86_push_imm_template (code)'.
20197
20198 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20199
20200         * mini-x86.c: make all push_imm instructions that get
20201         patched always emit the long form
20202
20203 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20204
20205         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20206         in a per-domain hash.
20207
20208         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20209         types.
20210
20211 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20212
20213         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20214         work.
20215         
20216         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20217         work.
20218
20219         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20220         Beginnings of SSE2 support.
20221
20222         * exceptions.cs: Add more tests for checked int<->uint casts.
20223
20224 2004-08-28  Martin Baulig  <martin@ximian.com>
20225
20226         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20227         generic instances.
20228
20229         * mini.c
20230         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20231         Handle generic instances recursively.
20232
20233 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20234
20235         * iltests.il: test for conv.u8 on a constant
20236
20237 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20238
20239         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20240         LCONV_x4 (shrun_32 (membase)).
20241
20242 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20243
20244         * inssel-x86.brg: c&p rules for push/setret of long
20245
20246 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20247
20248         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20249         compare (regvar, base)
20250
20251         * inssel-x86.brg: more burg love
20252
20253         * inssel.brg: more cleanup
20254
20255         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20256
20257 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20258
20259         * basic-long.cs, basic-calls.cs: new tests for optimization.
20260
20261 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20262
20263         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20264         patch.
20265
20266 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20267
20268         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20269         
20270 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20271
20272         * inssel.brg (mini_emit_memcpy): use 
20273         NO_UNALIGNED_ACCESS to disable memcpy optimization
20274
20275 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini-amd64.c: Handle generic types in various places.
20278
20279         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20280
20281 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * mini.c (handle_box): Fix warning.
20284
20285         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20286
20287         * mini-amd64.h: Enable the emit_state optimization.
20288
20289         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20290
20291         * mini-amd64.c: Add some new 64 bit peephole opts.
20292
20293         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20294
20295         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20296
20297         * mini-amd64.c: Register allocator fixes.
20298
20299         * mini.c: Add an optimization to emit_state to avoid allocation of new
20300         registers on some platforms.
20301
20302 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20305
20306         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20307         allocation. Fixes #63085.
20308
20309         * basic-long.cs: Add new regression test.
20310
20311         * mini-amd64.c: Register allocator improvements.
20312
20313 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20314
20315         * mini-amd64.c (read_tls_offset_from_method): Add another code
20316         sequence.
20317
20318         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20319         instruction sequence for nullifying class init trampolines.
20320
20321         * objects.cs: Add new regalloc test.
20322
20323         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20324
20325 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20328         
20329         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20330         arguments.
20331
20332         * driver.c: Fix profiling after TLS changes.
20333         
20334         * driver.c (mono_main): Set mono_stats.enabled if needed.
20335
20336         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20337         CEE_BOX.
20338
20339 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20340
20341         * mini-x86.c: use a 1 op rather than a 2 op tls access
20342         instruction -> faster.
20343
20344 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20345
20346         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20347         x86 backend.
20348
20349 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20350
20351         * exceptions-sparc.c (throw_exception): fix typo
20352
20353 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20354
20355         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20356         set tree->dreg correctly with tls. Allow any
20357         register to be used.
20358
20359         * mini-x86.c (read_tls_offset_from_method): add new code
20360         generation pattern seen with GCC.
20361
20362
20363 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20364
20365         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20366         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20367         exceptions-sparc.c: fix some performance issues in exception
20368         handling and setting of the stack trace for exceptions that were
20369         already thrown.
20370
20371 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20374         x86 backend.
20375         
20376         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20377         registers.
20378
20379 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20380
20381         This patch inlines tls access, when possible.
20382         
20383         * mini.h: new arch functions for TLS intrinsics.
20384         All platforms updated with a stub.
20385
20386         * mini.c: use the new intrinsics
20387
20388         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20389         arch specific intrinsic for tls variables
20390
20391 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20392
20393         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20394         under windows.
20395
20396 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20397
20398         * mini.c: thread local allocation
20399
20400 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20403
20404         * Makefile.am: Link against the static version of libmonogc.
20405         
20406         * Makefile.am: Link the static versions of the convenience libraries
20407         into the mono executable.
20408
20409         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20410
20411 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20412
20413         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20414         on integer overflow.
20415
20416         * mini-amd64.c: Reorganize function call code.
20417
20418         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20419
20420 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20421
20422         * inssel-x86.brg: use xor eax,eax.
20423         
20424         * basic.cs: new tests
20425
20426 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20427
20428         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20429         in exception throwing code.
20430         
20431 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20432
20433         * inssel-x86.brg: use xor esi,esi.
20434
20435 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20438         can trace methods compiled during mini_init () too.
20439
20440         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20441         CEE_CONV_U4.
20442
20443 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20444
20445         * Makefile.am: static link on x86 (r=zoltan)
20446
20447 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20450         code since it causes some programs to fail.
20451
20452 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20453
20454         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20455
20456 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20457
20458         * mini.c: ovfops_op_map - add STACK_OBJ case for
20459         CONV_I 
20460         * basic.cs: add test_0_pin_string as test
20461         case for above.
20462
20463 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20464
20465         * Makefile.am: build C# if srcdir != builddir
20466
20467 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20468
20469         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20470         fall-through blocks.
20471
20472 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20473
20474         * driver.c: enable loop by default again and include abcrem in -O=all.
20475
20476 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * iltests.il: Add some localloc tests.
20479
20480         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20481
20482         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20483         Fixes #62574.
20484
20485         * inssel-amd64.brg: Add some optimizations.
20486
20487         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20488         for gcc-3.4.
20489
20490         * Makefile.am: Statically link mono against libmono on AMD64.
20491         
20492         * mini-amd64.c inssel-amd64.brg: Optimizations.
20493
20494 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20497
20498         * tramp-amd64.c: Patch calling code in trampolines.
20499
20500 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20501
20502         * mini-amd64.c: pinvoke struct passing fixes.
20503
20504 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20505
20506         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20507         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20508
20509 2004-08-05  Duncan Mak  <duncan@ximian.com>
20510
20511         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20512         CEE_LDELEM_ANY.
20513
20514 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20515
20516         * mini-amd64.c (emit_move_return_value): Move return value for normal
20517         calls too.
20518
20519 2004-08-05  Martin Baulig  <martin@ximian.com>
20520
20521         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20522         `type->type'; just modify `type' itself when dealing with enums
20523         and generic instances.
20524         (check_call_signature): Make `simple_type' a `MonoType *'.
20525
20526 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * mini.c: Use OP_PADD to add offsets to addresses.
20529
20530         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20531
20532 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20533
20534         * mini-sparc.c (mono_arch_emit_epilog): fix check
20535         for folding last op into restore instruction
20536
20537 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20540         helper methods using the code manager.
20541         
20542         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20543
20544         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20545
20546 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20547         
20548         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20549           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20550
20551         * mini-s390.c: fix tail processing
20552
20553 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20554
20555         * mini-ppc.c: mul.ovf.un exception name fix.
20556
20557 2004-08-03  Martin Baulig  <martin@ximian.com>
20558
20559         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20560         instances; before jumping to `handle_enum', also modify `ptype'.
20561
20562 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20563
20564         * cpu-sparc.md: fcall maximal length too small.
20565
20566 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20567
20568         * mini-amd64.c mini.h: Add initial support for passing/returning 
20569         structures to/from pinvoked methods.
20570
20571 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20572
20573         * mini-ppc.c: reg allocator fix.
20574
20575 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20576
20577         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20578
20579         * inssel.brg: Optimize memset on 64 bit machines.
20580
20581         * mini-amd64.c: Fix some vararg cases.
20582
20583 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20584
20585         * mini-s390.c: Corrected macro in emit_float_to_int
20586
20587         * s390-abi.cs: Tests to exercise the s390 ABI
20588
20589 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20590
20591         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20592         caller saved regs.
20593
20594         * basic.cs: Add a test for add.ovf.un.
20595
20596 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20597
20598         * mini-sparc.c: add case for OP_IDIV_UN
20599
20600 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20601
20602         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20603         
20604         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20605
20606 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20607
20608         * basic.cs: regression tests.
20609
20610         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20611         regressions.
20612
20613 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20614
20615         * basic.cs: Add a new test.
20616
20617         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20618         and AOT. Various fixes and optimizations.
20619
20620         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20621
20622 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20623
20624         * mini-ppc.c: make sure temp regs are not used for global reg
20625         allocation.
20626
20627 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20628
20629         * cpu-sparc.md: conv_i8 fix for 64bits
20630
20631         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20632
20633 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20634         
20635         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20636         add opcode for cmp BYTE PTR [eax], imm.
20637
20638         * inssel.brg: Make memcpy and memset takes bases.
20639
20640 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * *-amd64.*: More AMD64 work.
20643         
20644 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20645
20646         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20647         add a compare-not-equal opcode.
20648         
20649 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20650
20651         * mini.c: Use mono_init_from_assembly instead of mono_init.
20652         
20653 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20654
20655         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20656
20657         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20658
20659         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20660
20661         * inssel.brg: 64 bit fixes.
20662
20663         * mini.h (MonoCallInst): Add some AMD64 specific data.
20664
20665         * mini.h: Add some OP_P opcodes.
20666
20667 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20668
20669         * basic.cs: tests for 61797 and 61740
20670
20671 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20672
20673         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20674         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20675
20676 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20677
20678         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20679
20680         * *-amd64*.*: Ongoing AMD64 work.
20681
20682 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20683
20684         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20685
20686         * *-amd64*: Ongoing AMD64 work.
20687
20688         * mini-arch.h: Add AMD64 support.
20689
20690         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20691
20692         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20693
20694         * mini-ops.h: Add new opcodes.
20695
20696         * Makefile.am: Add AMD64 support.
20697
20698         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20699         rules into the inssel-long*.brg files.
20700
20701         * *-amd64.*: Add beginnings of AMD64 backend.
20702
20703 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20704
20705         * mini.c (print_dfn): commenting out the code that prints
20706         the cil. With -O=deadce, this makes -v -v crash.
20707         
20708         * cpu-pentium.md: make checkthis have a length of 2
20709
20710 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20711
20712         * mini-sparc.h: fix implementations of __builtin
20713         functions for Sun compiler for V9.
20714
20715 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20716
20717         * mini.c: use the new stelem.ref wrapper
20718         * exceptions.cs, arrays.cs: new stelem.ref tests
20719
20720 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20721
20722         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20723         new XSP should work with these changes).
20724
20725 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20726         
20727         * inssel-{long32,x86,}.brg: trivial optimizations.
20728         
20729 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20730
20731         * mini.c: load value when emitting box operation in
20732         constrained calls.
20733
20734 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20735
20736         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20737         is one byte shorter than cmp DWORD PTR [eax], 0.
20738
20739 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20740
20741         * inssel-ppc.brg: arguments on the stack are always
20742         relative to the stack pointer (spotted by Neale Ferguson).
20743
20744 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20745
20746         * exceptions-x86.c: delay appending the method name to the trace until
20747         after mono_jit_info_table_find is called, as this gets the real
20748         MonoMethod.
20749
20750 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20751
20752         * aot.c: register roots
20753
20754 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20755
20756         * aot.c : I could just use PLATFORM_WIN32 flag.
20757
20758 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20759
20760         * aot.c : Reverting the previous fix. This time it broke linux build.
20761
20762 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20763
20764         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20765
20766 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20767
20768         * mini.c (handle_stack_args): Remove some more debugging code.
20769         
20770         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20771
20772         * driver.c mini.h aot.c: Allow additional options to be specified with
20773         --aot and pass them to mono_compile_assembly.
20774
20775         * aot.c: Add experimental code to AOT compile all loaded assemblies
20776         on demand and save the code into a cache in the filesystem.
20777
20778         * aot.c: Add support for more wrapper methods.
20779         
20780         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20781         58863.
20782
20783         * cpu-*.md: Remove removed opcodes.
20784
20785         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20786         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20787         related icalls to marshal.c.
20788
20789 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20790
20791         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20792
20793         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20794
20795         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20796
20797 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20798         * liveness.c: If liveness is recomputated we need to reset the information
20799         for each variable. This way, if the liveness range has been narrowed
20800         by optimizations that happened after the last computation, we can return
20801         a smaller range.
20802         
20803         For example, if you have
20804         
20805         {
20806                 int i = 0;
20807                 
20808                 // Tons of code that does not affect i
20809                 
20810                 i = foo ();
20811                 ...
20812         }
20813         
20814         i = 0 is dead code and will be removed by SSA. However, when
20815         linear scan gets to the code, i will still appear to be live
20816         throughout the entire block. This prevents good register allocation.
20817
20818 2004-07-06  Martin Baulig  <martin@ximian.com>
20819
20820         * debug-mini.c (mono_debug_init_method): Allow
20821         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20822         (mono_debug_add_icall_wrapper): New method.
20823
20824         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20825
20826 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20827
20828         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20829         optimization.
20830
20831 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * aot.c (mono_aot_load_method): Fix loading of debug info.
20834
20835 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * aot.c: Add logging support.
20838
20839 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20840
20841         * mini.h: Add prototype for mono_print_method_from_ip.
20842
20843         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20844
20845         * inssel.brg: 64 bit fixes.
20846
20847         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20848         inssel-long32.brg.
20849
20850         * Makefile.am: Add SPARC64 support.
20851
20852 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20853
20854         * aot.c: Fix alignment problems on 32 bit platforms.
20855
20856 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20859         SPARC64.
20860
20861         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20862         problems.
20863
20864         * mini.h: Bump AOT file version. Some 64 bit fixes.
20865
20866 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * inssel-sparc.brg: Add new rule to avoid register moves.
20869
20870         * inssel.brg: Add ldind_to_load_membase helper function.
20871
20872 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20873
20874         * mini.c: OffsetToStringData intrinsic.
20875         
20876 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20877
20878         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20879
20880         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20881         regression tests.
20882
20883         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20884 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20885
20886         * mini.c: reinstated mono_compile_get_interface_var()
20887         on x86, too, since the change breaks the Gtk# build there as well.
20888
20889 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20890
20891         * driver.c: remove loop from the default optimizations: it seems to
20892         interact badly with some of the other options (see bug #60613).
20893
20894 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20895
20896         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20897         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20898
20899 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20900
20901         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20902         vararg-using methods.
20903
20904 2004-06-21  Martin Baulig  <martin@ximian.com>
20905
20906         * mini/mini-exceptions.c
20907         (mono_handle_exception): Added `gpointer original_ip' argument.
20908         After calling mono_unhandled_exception(), call
20909         mono_debugger_unhandled_exception() and if that returns true,
20910         restore the context and return.
20911
20912 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20913
20914         * mini-ppc.c: prefer the use of relative branches so
20915         they won't need to be patched in aot code (patch from Patrick Beard).
20916
20917 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20918
20919         * aot.c: patch from Patrick Beard to make the output assembly
20920         more correct for the MacOSX assembler. Small tweak to
20921         generate sane images on Linux/PPC, too.
20922
20923 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20924
20925         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20926         case until bug #59509 is fixed (shows up in #60332).
20927
20928 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20929
20930         * mini.c: make sure the needed wrappers are compiled, too, with
20931         precomp.
20932
20933 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20934
20935         * driver.c: remove NPTL reference in --version output.
20936
20937 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20938
20939         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20940         generate valid assembly for the Mach-O assembler.
20941
20942 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20943
20944         * driver.c: don't include abcrem in the all optimization specifier
20945         since it slows down jit compilation too much for now.
20946
20947 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20948
20949         * mini.c: use BIGMUL only if both operands have the same signage.
20950         * iltests.il: Test for bug 60056. (errors related to signage in
20951         BIGMUL).
20952
20953         r=lupus.
20954
20955 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20956
20957         * mini.c, aot.c: memory leak fixes.
20958
20959 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20960
20961         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20962
20963 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20964
20965         * Makefile.am: remove the -static hack completely, it links in
20966         statically glib as well.
20967
20968 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20969
20970         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20971         * exceptions.cs: make it compile with new mcs/csc.
20972
20973 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20974         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20975         and added relevant test case.
20976
20977 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20978
20979         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20980         regressions in gtk-sharp.
20981
20982 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * exceptions.cs: New regression tests.
20985
20986         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20987
20988 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20989
20990         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20991
20992 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20993
20994         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20995
20996         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20997
20998 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20999
21000         * mini.c (mono_jit_runtime_invoke): Init class in this
21001         method instead of trusting mono_jit_compile_method to
21002         do the work (because wrappers can be in object class)
21003
21004 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21005
21006         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21007
21008         * basic-long.cs: New regression test.
21009
21010 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21011
21012         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21013         and div/rem checks.
21014
21015 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21016
21017         * Makefile.am: fix miguel's change to build mono statically against
21018         libmono (track build dependencies).
21019
21020 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * cfold.c: Some glib versions do not have G_MININT32.
21023
21024 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21025
21026         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21027         with precision of tan, atan, sin and cos, and implemented related
21028         regressions tests (fixes bug 54467, but one new problem appeared and
21029         is not fixed yet).
21030
21031 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21032
21033         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21034
21035         * exceptions.cs: Add test for constant folding && division by zero.
21036
21037         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21038         since driver.c is in libmono too, so the optimization was useless.
21039
21040         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21041         variable to driver.c so the compiler can emit more efficient code to
21042         access them.
21043
21044 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21045
21046         * Makefile.am: don't distribute generated inssel.[ch] files.
21047
21048 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21049
21050         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21051         into the default appdomain. Fixes #58707.
21052
21053         * jit-icalls.c: Remove the broken approximation for truncl, doing
21054         no conversion is better.
21055
21056         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21057         Fixes #58863.
21058
21059 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21060
21061         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21062         of the mcrxr instruction which is not available on some processors
21063         even if it's documented to be. Implement add and sub overflow correctly
21064         (still not complete for long unsigned). Speed up icalls a bit.
21065
21066 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21067
21068         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21069         we run .cctor in the current domain instead of target_domain.
21070         
21071         Fixes bug #58558, .cctor not being called in -O=shared.
21072
21073 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21074
21075         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21076
21077 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21078
21079         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21080         which can be done with an imm8, do it that way.
21081         (mono_arch_output_basic_block): ditto for a jmp
21082         (mono_arch_emit_prolog): Computate maximum offset of a label.
21083
21084 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21085
21086         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21087         now tries to allocate prefered physical reg's for virtual
21088         regs. This reduces the number of emited spills/loads with
21089         20-30% on our core assemblies.
21090
21091 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21092
21093         * jit-icalls.c: truncl() is not needed and trunc() is
21094         the correct thing to do anyway (bug #58287).
21095
21096 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21097
21098         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21099         if available.
21100
21101 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21102
21103         * driver.c: enable loop optimizations by default.
21104
21105 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21106
21107         * mini-x86.c: fix calc of max loop size when aligning loops start.
21108
21109 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21110
21111         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21112         the stack.
21113
21114 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21117         should set carry.
21118
21119         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21120
21121         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21122         
21123         * mini.c (inline_method): Allways inline some wrappers even if the cost
21124         is too large. Fixes #58785.
21125
21126         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21127         
21128 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21129
21130         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21131         (crichton@gimp.org). Beginning of support for sparc/linux.
21132
21133         * mini-sparc.c: Optimize retrieval of LMF address.
21134
21135 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21136
21137         * exceptions-ppc.c:  handle alloca in methods with clauses.
21138
21139 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21140
21141         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21142
21143 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21144
21145         * mini.c: Delegate most of the abort signal work to 
21146           mono_thread_request_interruption, which also handles Stop and Suspend
21147           states.
21148
21149 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21150
21151         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21152         supports the save/restore lmf opcodes.
21153
21154 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21155
21156         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21157         by gcc-3.4 as well.
21158
21159         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21160
21161 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21162
21163         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21164         methods which contain array accesses.
21165
21166         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21167         boundaries. Fixes #58537.
21168
21169         * iltests.il: Add regression test for #58537.
21170
21171 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21172
21173         * mini-x86.c (mono_arch_local_regalloc): Last part of
21174         fix for bug #58633 (releasing register to early).
21175
21176 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21177
21178         * basic-long.cs: Add new regression test.
21179
21180 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21181
21182         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21183         register too early on the chain.
21184
21185 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21186
21187         * mini.c (create_helper_signature): Use a helper function to reduce
21188         the code which needs to be written. Also set the calling convention of
21189         icalls on windows. Fixes #57840.
21190
21191 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21192
21193         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21194         exceptions-ppc.c: added helper function to get the instruction address
21195         from a signal handler context.
21196
21197 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21198
21199         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21200         from gonzalo.
21201
21202 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21203
21204         * helpers.c: Add new env variable to pass args to objdump.
21205         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21206
21207 2004-05-17  Radek Doulik  <rodo@ximian.com>
21208
21209         * Makefile.am (common_sources): added abcremoval.h so it get
21210         disted and daily mono packages on go-mono.com will build again
21211
21212 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21213
21214         * abcremoval.c: Fixed coding style, added copyright header.
21215
21216         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21217
21218         * mini.h: Added prototype for abc removal main function.
21219
21220         * build_relations_propagation_table.pl: Added copyright header.
21221
21222 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21223
21224         * basic-long.cs: reg test for complex ceq_long bug.
21225
21226 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21227
21228         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21229         reg in long and clob case (bug #58343). Fixed/added comments.
21230
21231 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21232
21233         * mini.c (mono_jit_runtime_invoke): Follow new convention
21234         of calling the invoke method with an function pointer.
21235
21236 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21237
21238         * ChangeLog: Fix author of memory leak patch.
21239
21240 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21241
21242         * Makefile.am: fix make dist as well...
21243
21244
21245 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21246
21247         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21248         on archs where pointers are 4 bytes long.
21249
21250         * Makefile.am: Added abcremoval.c source file.
21251
21252         * abcremoval.c: Added abcremoval.c.
21253
21254         * abcremoval.h: Added abcremoval.h.
21255
21256         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21257
21258         * inssel.brg: Enabled bounds check removal.
21259
21260         * mini.c: Added support for abcrem optimization.
21261
21262         * mini.h: Added abcrem optimization label.
21263
21264         * driver.c: Added support for abcrem optimization.
21265
21266         * propagated_relations_table.def: Added propagated_relations_table.def.
21267
21268 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21269
21270         * mini.c, cfold.c: fix style.
21271
21272 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21273
21274         * mini.c: handle issue with the low-level implementation of
21275         some long opcodes (bug #54209).
21276
21277 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21278
21279         * basic.cs: test for my new cmov stuff.
21280
21281 2004-05-13      Patrik Torstensson
21282
21283         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21284         opt and added peephole documentation.
21285
21286 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21287
21288         * tramp-ppc.c: rewrote the generic trampoline code.
21289
21290 2004-05-11      Patrik Torstensson
21291
21292         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21293
21294 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21295
21296         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21297
21298         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21299         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21300
21301         * mini.c: Add new icalls for AsAny marshalling.
21302
21303 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21304
21305         * tramp-ppc.c, mini-ppc.c: more cleanups.
21306
21307 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21308
21309         * mini.c: no warnings.
21310
21311 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21312
21313         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21314
21315 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21316
21317         * mini.c: In the thread abort signal handler, if the thread is in the
21318         process of being stoped, don't throw the Abort exception, just stop the
21319         thread.
21320
21321 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21322
21323         * tramp-ppc.c: removed old code.
21324
21325 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21326
21327         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21328         do some simple speed optimizations on ppc.
21329
21330 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21331
21332         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21333         and large offsets in load/store.
21334
21335 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21336
21337         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21338         it causes regressions.
21339
21340 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21343         support.
21344
21345 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21346
21347         * jit-icalls.c: remove warnings.
21348         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21349         speedups for unsafe code.
21350
21351 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21352
21353         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21354
21355 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * basic-calls.cs: Add new regression test.
21358
21359         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21360         more portable.
21361
21362         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21363
21364         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21365         is no longer used.
21366
21367 2004-05-06      Patrik Torstensson
21368
21369         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21370         long reg allocation in any reg (not only eax:edx) and implemented 
21371         long shl/shr ops in asm instead of helpers.
21372
21373 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21374
21375         * mini-sparc.h: Fix warnings.
21376
21377         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21378         stack.
21379
21380         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21381         separate statement for clarity.
21382
21383         * mini-sparc.c: Update status.
21384
21385 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21386
21387         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21388         here.
21389
21390 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21391
21392         * inssel-ppc.brg: another small pre-release workaround:
21393         we don't do overflow detection for long_sub_un.
21394
21395 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21396
21397         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21398         (also works around a weird ppc bug: 57957).
21399
21400 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21401
21402         * tramp-ppc.c: trampoline fixes.
21403
21404 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21405
21406         * mini-ppc.c: fixed typos.
21407
21408 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21409
21410         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21411         at the top of the stack. Fixed typos. Use a frame registers
21412         for all the methods with exception clauses.
21413
21414 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21415
21416         * exceptions-ppc.c: restore fp registers.
21417
21418 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21419
21420         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21421         order from the stack top (moved the stack room to save the
21422         return value for trace after the param area). Fixed corruption
21423         in restoring registers on unwind.
21424
21425 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21426
21427         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21428
21429 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21430
21431         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21432         and prolog/epilog for methods that use it. Allow
21433         enough param area room for varargs methods. Fix miguel's
21434         breakage in exception handling.
21435
21436 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21437
21438         * Makefile.am: run genmdesc only on current arch.
21439
21440 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21441
21442         * exceptions-x86.c:
21443         * mini-x86.h: fix the build on windows.
21444
21445 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * 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.
21448
21449         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21450
21451         * mini-exceptions.c: New file.
21452         
21453         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21454         Move some parts of the x86 exception handling code to an 
21455         arch-independent file so it can be shared with other ports.
21456
21457 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21458
21459         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21460
21461 2004-04-26  David Waite  <mass@akuma.org>
21462
21463         * driver.c: remove comma from end of enumeration declaration
21464
21465 2004-04-26  Jackson Harper  <jackson@ximian.com>
21466
21467         * driver.c: parse config file before loading first assembly. This
21468         allows the user gac to be enabled/disabled. 
21469         
21470 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21471
21472         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21473         simpler mechanism: we do not care what is encoded initially
21474         (branch absolute or relative), we care about the code and its
21475         target.  I kept the old code for reference for now.
21476
21477         The new code tries first to determine if the jump is anywhere in
21478         the -/+32 absolute meg range, if it succeeds, it encodes using the
21479         absolute branch;  If not, it tried to find something in the
21480         relative range, if not, it uses the handle_thunk code. 
21481
21482 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21483
21484         * exceptions-ppc.c: use the correct ip register on macosx.
21485
21486 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21487
21488         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21489
21490 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21491
21492         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21493         Raise exception on integer divide by zero by hand since the hw
21494         doesn't support it. Handle NaNs in FP compares.
21495
21496 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21497
21498         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21499         code reducing duplication between the platforms and enabled
21500         signal exception handling (on linux for now).
21501
21502 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21503
21504         * exceptions-ppc.c: more macosx support.
21505
21506 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21507
21508         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21509
21510 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21511
21512         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21513
21514 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21515
21516         * iltests.il: more tests.
21517
21518 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21519
21520         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21521         vars as well.
21522
21523 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21524
21525         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21526
21527 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21528
21529         * liveness.c: Mark variables as volatile in all basic blocks reachable
21530         from exception clauses.
21531
21532 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21535         inlining.
21536
21537 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21538
21539         * iltests.il, basic.cs: more tests for regalloc.
21540
21541 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21542
21543         * iltests.il: Some tests for register allocation modifications
21544         I have locally.
21545
21546 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * exceptions.cs: Add regression test for bug #56782.
21549
21550         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21551         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21552         the beauty of fixing the same thing in 5 different files...
21553
21554 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21555
21556         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21557         methods.
21558
21559 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21560
21561         * mini.c: Add support for STRWLPARRAY marshalling convention.
21562
21563 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21564
21565         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21566         to init the context to setup the regs pointer).
21567
21568 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21569
21570         * exceptions-ppc.c: more exceptions work.
21571
21572 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21573
21574         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21575         not allowed.
21576
21577 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21578
21579         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21580         can use the memory directly.
21581
21582         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21583
21584         add x86_add_membase, x86_sub_membase, x86_mul_membase
21585
21586 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21587
21588         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21589         GENERAL_REGS they were also hardcoded for all PPC ports.
21590
21591         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21592
21593         Remove hard-coded limit for floating point registers, use
21594         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21595
21596         Notice that in MacOS X calling conventions you can fit a lot more
21597         floating point values in registers, so I should update the PInvoke
21598         test to excercise the passing of floating point values on the
21599         stack (currently broken).
21600         
21601 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21602
21603         * tramp-ppc.c (create_trampoline_code): Added
21604         JUMP_TRAMPOLINE_SIZE. 
21605         (ppc_magic_trampoline): Follow the pattern from
21606         x86_magic_trampoline: if code is set to zero, return. 
21607         (create_trampoline_code): Always pass MonoMethod to the jump
21608         trampoline, before it was passing a null.
21609         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21610         share the code with mono_arch_create_jit_trampoline. 
21611
21612         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21613         implemented.
21614         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21615         implemented.  
21616
21617         * cpu-g4.md: Added length for jmp instruction, the worst case
21618         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21619         for save_lmf).
21620
21621 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21622
21623         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21624
21625 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21626
21627         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21628         before each IL instruction.
21629
21630         * mini.c (CEE_BOX): Fix warnings.
21631
21632 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21633
21634         * mini.c: removed a few unused vars and extra whitespace.
21635
21636 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21637
21638         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21639         checks.
21640         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21641         index.
21642         (OP_GETCHR): use the above
21643         (CEE_LDELEMA): use the above.
21644
21645         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21646         version of the generic impl.
21647         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21648         (CEE_LDELEMA): use the above.
21649
21650 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21651
21652         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21653         Fixes #56317.
21654
21655         * iltests.il: Added new regression test for #56317.
21656
21657 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21658
21659         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21660         under NetBSD. Fixes #56450.
21661
21662         * liveness.c (update_gen_kill_set): Fix previous patch.
21663
21664 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21665
21666         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21667
21668 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21671         ldsfld and ldsflda.
21672
21673         * inssel-sparc.brg: Add more optimizations.
21674
21675         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21676
21677 2004-04-01  Martin Baulig  <martin@ximian.com>
21678
21679         * mini.c (handle_box): New static function; moved the
21680         implementation of CEE_BOX here.
21681         (mono_method_to_ir): Added `constrained_call' variable.
21682         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21683         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21684         mono_method_get_constrained() to get the method.
21685
21686 2004-04-01  Martin Baulig  <martin@ximian.com>
21687
21688         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21689         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21690         (mono_method_to_ir): We don't need these macros anymore since
21691         mono_class_get_full() already takes care of it. 
21692
21693 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21694
21695         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21696         use @function (as doesn't accept #function here) and check the return
21697         value of system and stop if fails.
21698
21699 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21700
21701         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21702
21703 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21704
21705         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21706
21707         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21708
21709         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21710         #56223.
21711
21712         * basic-long.cs: Add test for negation of Int64.MinValue.
21713
21714 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21715
21716         * mini-sparc.c: Update status.
21717
21718         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21719
21720         * exceptions-sparc.c: Fix return value in filters.
21721
21722         * inssel-sparc.brg: Fix register allocation in some rules.
21723
21724 2004-03-28  Martin Baulig  <martin@ximian.com>
21725
21726         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21727         if neccessary.  
21728
21729 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21730
21731         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21732         
21733         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21734         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21735         remove unused conv_u4 opcode.
21736
21737         * mini-x86.c: Remove valgrind workaround since it slows down things
21738         even when mono is not run under valgrind.
21739
21740 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21741
21742         * mini-sparc.c: Update status.
21743
21744         * inssel-sparc.brg: Add some optimizations.
21745
21746         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21747         future delay slot filling. Add support for varargs, tail calls and JMP.
21748
21749         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21750         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21751
21752         * inssel.brg: Fix register allocation in OP_ARGLIST.
21753
21754         * inssel.brg: Fix warnings.
21755
21756 2004-03-25  Martin Baulig  <martin@ximian.com>
21757
21758         * mini.c (inflate_generic_field): Removed.
21759         (mini_get_method): Removed, use mono_get_method_full(),
21760         (mini_get_class): Removed, use mono_class_get_full().
21761         (mono_method_to_ir): Pass our generic context to
21762         mono_field_from_token().        
21763
21764 2004-03-25  Martin Baulig  <martin@ximian.com>
21765
21766         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21767         of a `MonoMethod *'.
21768         (mini_get_method): Take a `MonoGenericContext *' instead
21769         of a `MonoMethod *'.
21770         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21771         a new local variable called `generic_context' which holds the
21772         current `MonoGenericContext *'; use it to lookup things.
21773
21774 2004-03-24  Martin Baulig  <martin@ximian.com>
21775
21776         * mini.c (mini_get_class): New static method; if we're inside a
21777         generic instance, inflate the class if neccessary.
21778         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21779
21780 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * iltests.il: New regression test for #55976.
21783
21784         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21785         #55976.
21786
21787 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21790         output.
21791
21792 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * liveness.c: Consider SSA stores as well as loads when making vars
21795         volatile.
21796
21797         * exceptions.cs: New regression tests for register allocation.
21798         
21799 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21800
21801         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21802         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21803           domain lock only to protect puntual access to data structures.
21804           Added access lock for sighash, jit_icall_hash_name, 
21805           jit_icall_hash_addr and domain->code_mp.
21806
21807 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21808
21809         * driver.c: Print SIGSEGV handling method.
21810
21811         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21812
21813         * mini.c (setup_jit_tls_data): Handle case when this is called
21814         multiple times for a thread.
21815
21816         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21817         is different from fbxx_un. Fixes #54303. Also use constants instead of
21818         magic numbers in a lot of places.
21819
21820 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * exceptions.cs: Fix cctor test when --regression is used.
21823
21824 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21825
21826         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21827         for Linux/ppc.
21828
21829 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21830
21831         * inssel-ppc.brg: fixed register assignments for some rules.
21832
21833 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * exceptions.cs: Add test for exceptions in static constructors.
21836
21837         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21838         static constructors outside the domain lock. Fixes #55720.
21839
21840 2004-03-17  Martin Baulig  <martin@ximian.com>
21841
21842         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21843         (inflate_generic_field): Take the `MonoMethod *' instead of the
21844         `MonoClass *' and added support for generic method.
21845         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21846         have a `field->parent->gen_params', only inflate the field if it's
21847         an open constructed type.
21848
21849 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21850
21851         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21852         exception object instead of the preconstructed ones.
21853
21854 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21855
21856         * mini.c: reverted changed to sigsegv_signal_handler commited
21857         accidentally in the previous patch.
21858
21859 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21860
21861         * mini.c:
21862         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21863         running --aot with an old assembly.
21864
21865 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21866
21867         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21868         point values.
21869
21870         * mini-sparc.c: Add support for v9 branches with prediction.
21871
21872 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21873
21874         * mini.c (mini_init): #warning is GNUC only
21875
21876         * mini-sparc.h: implement __builtin_frame_address
21877         and __builtin_return_address for Sun C compiler
21878
21879 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21880
21881         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21882
21883 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21884
21885         * basic-calls.cs: Add test for unaligned byref long argument passing.
21886
21887         * mini-ops.h: Add sparcv9 compare and branch instructions.
21888
21889         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21890         v9 instructions if we have a v9 cpu.
21891
21892         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21893         registers for global allocation.
21894
21895         * exceptions-sparc.c: Fixes.
21896         
21897 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * liveness.c (mono_analyze_liveness): Optimized version.
21900
21901         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21902
21903         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21904         sparc work.
21905
21906         * basic-float.cs basic-calls.cs: New regression tests.
21907
21908 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21911         sigaltstack implementation.
21912
21913         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21914         
21915         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21916         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21917
21918 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21919
21920         * mini.c: Fix warnings.
21921         
21922         * mini.c (mono_resolve_patch_target): New function which contains the
21923         arch independent part of the patching process.
21924
21925         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21926         patching code to a separate function.
21927
21928 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21929
21930         * mini.c (add_signal_handler): ifdef out on Windows
21931
21932 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21933
21934         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21935         cpu-sparc.md: Add exception handling support + other fixes.
21936
21937         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21938         typed GC detection in --version.
21939
21940         * basic.cs exceptions.cs: New regression tests.
21941
21942         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21943         the arch specific code can store data during a compilation.
21944
21945         * mini-ops.h: Add OP_SETFRET.
21946
21947         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21948         function, register a separate icall for each arity, so the icalls can
21949         get a wrapper.
21950         
21951         * mini.c (mono_print_tree): Print negative offsets in a more readable
21952         form.
21953         
21954         * mini.c: Make signal handling work on sparc.
21955         
21956         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21957
21958         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21959
21960         * jit-icalls.c: Emulate truncl by aintl on solaris.
21961
21962         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21963
21964 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21967
21968 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21969
21970         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21971         a MarshalByRef type, inline a method that performs the check, taking into
21972         account that the object can be a proxy. Also implemented tow new opcodes:
21973         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21974         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21975         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21976
21977 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21978
21979         * mini-ppc.c: if a relative branch displacement is too big
21980         but it points to and area reachable with an absolute branch, 
21981         avoid the thunks.
21982
21983 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21984
21985         * mini.c: optimize small copies in cpblk.
21986
21987 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * basic-calls.cs basic-float.cs: New regression tests.
21990
21991         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21992         negative offsets from %fp. Implement localloc. Fix local register 
21993         allocation. Fix the case when the this argument needs to be saved to
21994         the stack. Implement some missing opcodes.
21995
21996 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * mini.c (mini_method_compile): Reenable global regalloc in methods
21999         with exception handlers.
22000
22001         * linear-scan.c (mono_varlist_sort): Fix warning.
22002
22003         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22004
22005         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22006         regalloc costs.
22007
22008         * liveness.c: Make all variables uses in exception clauses volatile, to
22009         prevent them from being allocated to registers. Fixes #42136.
22010
22011 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22012
22013         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22014         causes regressions.
22015
22016         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22017         argument to mono_arch_regalloc_cost.
22018
22019         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22020         precisely.
22021
22022 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22025         Make the cost of allocating a variable to a register arch dependent.
22026
22027         * basic-calls.cs: Fix compilation of tests.
22028         
22029         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22030         helper function to cut back on the number of #ifdefs needed.
22031
22032         * mini-ppc.c: Fix compilation.
22033
22034         * basic-calls.cs: New regression tests.
22035
22036         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22037
22038         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22039         of l0 since that is callee saved.
22040
22041         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22042         to virtual calls.
22043
22044         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22045         of delay instruction.
22046
22047         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22048
22049         * mini.h (MonoCallInst): Add 'virtual' flag.
22050
22051         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22052
22053 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * *.cs: New regression tests.
22056
22057         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22058         work.
22059
22060         * mini.c (mono_runtime_install_handlers): Fix build.
22061
22062         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22063         'signal_stack_size' members.
22064
22065         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22066         alternate signal stack.
22067
22068         * exceptions-x86.c: Add stack overflow handling.
22069
22070         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22071         functions to arch independent code.
22072
22073         * mini.c (mono_print_tree): Print more detailed info for load_membase
22074         opcodes.
22075         
22076 2004-02-23  Martin Baulig  <martin@ximian.com>
22077
22078         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22079
22080 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22081
22082         * mini-x86.c: fixed reg allocation for div/rem.
22083
22084 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22085
22086         * driver.c (mono_main): Report some configuratio options on --version.
22087
22088 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22089
22090         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22091         low in the address space. Correctly flush memory in thunks where we
22092         output native code.
22093
22094 2004-02-20  Martin Baulig  <martin@ximian.com>
22095
22096         * mini.c (mini_get_method): New static method; inflate all generic
22097         methods and methods in open generic instances.
22098         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22099         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22100
22101 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22102
22103         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22104
22105         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22106
22107 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22108
22109         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22110
22111         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22112         it compile using Sun's compiler.
22113
22114 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * 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.
22117
22118         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22119
22120 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22121
22122         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22123         code.
22124         * mini-ppc.c: handle calls outside of the allowed range with thunks
22125         allocated using the code manager.
22126         * tramp-ppc.c: use the code manager to hold generated native code.
22127         Fixed the magic trampoline to just patch vtable entries.
22128
22129 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22132         independent file.
22133
22134 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22135
22136         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22137         PPC.
22138
22139         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22140         if we have a working __thread implementation.
22141
22142         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22143         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22144
22145 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * mini-x86.c: Fix compilation under gcc 2.
22148         
22149 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22150
22151         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22152         contains a call to the wrapped function.
22153
22154         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22155         OP_<CALL>_IMM opcodes, and use them under X86.
22156         
22157         * mini.c (mono_jit_find_compiled_method): Fix warning.
22158
22159         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22160
22161         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22162
22163         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22164         functionality to mini.c.
22165
22166         * mini.c (mono_create_jump_trampoline): New function to create a jump
22167         trampoline. Return a compiled method instead of a trampoline if it
22168         exists. Add a cache for jump trampolines.
22169
22170         * mini.c (mono_jit_find_compiled_method): New function to return a
22171         compiled method if it exists.
22172
22173         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22174         mono_arch_create_jit_trampoline.
22175
22176         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22177         a jump trampoline. Fixes #52092.
22178         
22179 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22180
22181         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22182         which is not up-to-date. Add check_corlib_version () instead.
22183
22184         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22185         have to call it.
22186         
22187         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22188         since newer valgrind versions do not need it.
22189
22190         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22191         compile a method with a given set of optimizations.
22192
22193         * mini.c: Compile icall wrappers on-demand instead of at startup.
22194
22195         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22196         wrapper for an icall.
22197
22198 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22199
22200         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22201         #54063.
22202
22203         * iltests.il: Add test for non-empty stack before switch instruction.
22204
22205 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22206
22207         * mini.c: Add support for new stringbuilder marshalling conventions.
22208
22209         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22210
22211 2004-02-01  Martin Baulig  <martin@ximian.com>
22212
22213         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22214         in `ginst->mtype_argv'.
22215
22216 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22217
22218         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22219         facilitate grepping.
22220
22221 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22222
22223         * mini.c: fixed buglet in initobj generic implementation for references.
22224
22225 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22226
22227         * Makefile.am: make the version script conditional.
22228         * jit-icalls.c: handle missing truncl().
22229
22230 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22231
22232         * exceptions.cs: Add more tests for double->int conversion.
22233
22234         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22235         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22236
22237 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22238
22239         * driver.c: make --verbose --version emit an error
22240         if the loaded corlib doesn't match the runtime version.
22241
22242 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22243
22244         * mini-ppc.h: export ppc_patch().
22245         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22246         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22247         on par or better than on MacOSX.
22248
22249 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22252         mono_lookup_pinvoke_call.
22253
22254         * mini-x86.c: Under windows, the default pinvoke calling convention is
22255         stdcall. Fixes #52834.
22256
22257         * mini.c (optimize_branches): Add an upper bound to the number of
22258         iterations to prevent infinite loops on strange loops. Fixes #53003.
22259
22260 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22261
22262         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22263         and ISINST. Fixes #52093.
22264
22265         * objects.cs (test_0_vector_array_cast): New tests.
22266         
22267 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22270         checking in Array.Set ().
22271
22272         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22273         #52590.
22274
22275         * object.cs (test_0_multi_array_cast): New regression test.
22276
22277 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22278
22279         * exceptions-ppc.c: fix build on Linux/PPC.
22280
22281 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22282
22283         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22284         running under valgrind.
22285         (x86_magic_trampoline): Fix build bustage.
22286
22287         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22288         negative values as well. This is needed for the encoding of the line number
22289         info, since sometimes the line numbers are not in increasing order.
22290
22291 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * cpu-pentium.md (localloc): Increase the size of the localloc 
22294         instruction since it is a loop under Win32.
22295
22296         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22297         allocation.
22298
22299 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22302         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22303         Max Horn (max@quendi.de). Fix file names in comments.
22304
22305 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22306
22307         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22308         avoid stack overflow.
22309         (replace_usage): Avoid uninitialized variable warnings.
22310
22311         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22312         and taking the address of valuetype variables.
22313
22314 2004-01-03  Patrik Torstensson
22315
22316         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22317         for other purposes than FP later on.
22318
22319 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22320
22321         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22322         of tail calls.
22323
22324 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22325
22326         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22327
22328 2003-12-30  Patrik Torstensson <p@rxc.se>
22329
22330         * mini-x86.h: Decreased number of availiable fp regs.
22331         Solves corner cases with FP spilling.
22332
22333 2003-12-23  Patrik Torstensson <p@rxc.se>
22334
22335         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22336         for floating point stack tracking / spilling on x86. 
22337         Fixes bug #49012.
22338         
22339         * basic-float.cs: added float mul overflow test.
22340
22341 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22342
22343         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22344
22345 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22346
22347         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22348         supports for cond branches that overflow the immediate
22349         overflow offset. mcs can compile simple programs.
22350
22351 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22352
22353         * exceptions-ppc.c: exception handling support wip:
22354         finally handlers get run on exception.
22355
22356 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22359         profiling.
22360
22361 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22362
22363         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22364         initial support for stack walking and unwinding.
22365
22366 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22367
22368         * driver.c (mono_main): Make corlib-out-of-sync message more 
22369         descriptive. Also remove verify_corlib call.
22370
22371 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22372
22373         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22374         not overlap with other call's arguments, too.
22375
22376 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22377
22378         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22379         move to arch-specific code the choice of arch-specific
22380         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22381         * mini.c: ensure emulation calls will not interleave
22382         with other calls.
22383
22384 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22385
22386         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22387         the magic trampoline stack frame is dropped before executing
22388         the new method.
22389
22390 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22391
22392         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22393         and integer to fp conversions. Added support for overflowing
22394         arguments on the stack. Reserve a couple more registers as temps.
22395         Added support for aot compilation (as output still needs to be
22396         tweaked, though).
22397
22398 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22399
22400         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22401         Don't overwrite return register in some corner cases.
22402
22403 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22406         static constructors when AOT compiling.
22407
22408         * driver.c (mono_main): Call mono_check_corlib_version.
22409
22410 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22411
22412         * cpu-g4.md, basic.cs: fixed div target register.
22413
22414 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22415
22416         * mini-ppc.c, basic.cs: shl_imm fix with test.
22417
22418 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22419
22420         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22421         structures by value. Misc fixes.
22422         * objects.cs: more tests.
22423
22424 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22425
22426         * mini-ppc.c: lconv.ovf.i implemented.
22427
22428 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22429
22430         * mini.c:
22431         (mini_init): don't error out if someone already called g_thread_init.
22432
22433 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22434
22435         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22436         to be any type per the spec. Fix abnormal memory usage when
22437         the same object is repeatedly thrown.
22438
22439 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22440
22441         * mini.c: check for overruns in IL code.
22442
22443 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22444
22445         * TODO: Add/remove some todo entries.
22446
22447 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22448
22449         * driver.c (mono_main): Call mono_verify_corlib.
22450
22451 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22452
22453         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22454         This has been moved to mini.c
22455         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22456         type being casted is marshalbyref it could be a proxy, so instead of
22457         emitting the type check code, emit a call to a runtime method that will
22458         perform the check by calling CanCastTo if needed.
22459
22460 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22461
22462         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22463         methods with large stack frames under Win32.
22464
22465 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22466
22467         * Makefile.am: Distribute regression tests.
22468
22469         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22470         at the end instead of inserting each variable into the sorted list.
22471
22472         * linear-scan.c (mono_varlist_sort): New helper function.
22473         
22474 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22475
22476         * mini.c: ensure arguments and locals are within bounds.
22477
22478 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22479
22480         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22481         related fixes.
22482
22483 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22484
22485         * mini.c (mono_cprop_copy_values): Fix crash.
22486
22487         * aot.c: Set verbosity back to 0.
22488         
22489 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22490
22491         * regalloc.c: complete memory leak fix by Laurent Morichetti
22492         (l_m@pacbell.net).
22493
22494 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22495
22496         * driver.c (main_thread_handler): Revert the previous patch.
22497
22498         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22499         under valgrind.
22500
22501         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22502         memory from the memory pool.
22503
22504         * driver.c (main_thread_handler): Turn on all optimizations when
22505         --aot is used.
22506
22507         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22508         an array for better performance.
22509
22510         * regalloc.c (mono_regstate_assign): Fix memory leak.
22511
22512         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22513         serialize the debug info.
22514
22515         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22516         debug info from the serialized representation.
22517
22518         * aot.c: Save debug info into the generated file and load it when 
22519         loading a method.
22520
22521         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22522
22523 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22524
22525         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22526         More FP-related fixes.
22527
22528 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22529
22530         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22531         and register allocation buglet. Hello world now runs.
22532
22533 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22534
22535         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22536         * tramp-ppc.c: fixed class init trampoline.
22537         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22538
22539 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22540
22541         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22542         mini.c: more ppc changes/fixes.
22543
22544 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22545
22546         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22547         Also optimize the case when the arguments are the same in the caller 
22548         and in the callee.
22549
22550         * iltests.il: Add tests for tail calls with valuetype arguments.
22551
22552 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22553
22554         * mini-ppc.c: fixes for struct return type.
22555
22556 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22557
22558         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22559         mono_spillvar_offset() to arch-specific code.
22560
22561 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22562
22563         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22564
22565 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * exceptions-x86.c: Fix stack space leaks.
22568         
22569         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22570         registers from the lmf if the method has save_lmf set.
22571
22572 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22575         of icall wrappers into InvokeInDomain, since these are now per-domain.
22576
22577 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22578
22579         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22580         make some opcode emulation and intrinsic ops enabled/disabled 
22581         according to the architecture. More fixes.
22582
22583 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22584
22585         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22586
22587 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22588
22589         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22590         arch-specific handling for 'this' and struct return type to
22591         arch-specific code.
22592
22593 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22594
22595         * aot.c: prevent divide by zero error when reporting (it happened with
22596         Accessibility.dll).
22597
22598 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * mini.h (inst_switch): Remove unused macro.
22601
22602 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22603
22604         * aot.c:
22605         (load_aot_module): free 'info->methods' and 'info' properly. No more
22606         "free(): invalid pointer blah" messages when you have an old aot
22607         compiled assembly.
22608
22609 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22610
22611         * jit-icalls.c, mini.c: Added support for context static fields.
22612
22613 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * mini.c (mono_method_blittable): Methods which set LastError are not 
22616         blittable either. Fixes #51108.
22617         
22618 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22619
22620         * mini.c: flush icache.
22621         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22622
22623 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22624
22625         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22626
22627 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22628
22629         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22630         safe on IA32.
22631
22632         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22633         vararg calls.
22634
22635         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22636
22637 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22638
22639         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22640         instruction when the result is discarded.
22641
22642         * iltests.il (test_0_div_regalloc): New regression test.
22643
22644         * arrays.cs: Fix compilation error.
22645
22646 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22647
22648         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22649         float rules to inssel-x86.brg: sane architectures with FP registers
22650         don't need to implement these rules.
22651
22652 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22653
22654         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22655
22656 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22657
22658         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22659         implementation of 32 bit systems.
22660
22661 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22662
22663         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22664         (Jeroen Zwartepoorte).
22665
22666 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22667
22668         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22669         the caller and the callee matches.
22670         
22671         * mini.c (mono_method_to_ir): Add comment.
22672
22673         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22674         signbit is missing on some platforms.
22675
22676 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22677
22678         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22679
22680         * mini.c (setup_jit_tls_data): Call the new function.
22681         
22682         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22683
22684         * mini-x86.c: Add experimental support for fast access to the lmf
22685         structure under NPTL/Linux 2.6.x.
22686
22687 2003-11-06  Martin Baulig  <martin@ximian.com>
22688
22689         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22690         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22691         the debugger.
22692
22693 2003-11-02  Martin Baulig  <martin@ximian.com>
22694
22695         * mini.c (inflate_generic_field): New static method.
22696         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22697         generic instance and the field is declared in a generic type, call
22698         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22699
22700 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22701
22702         * mini.h mini.c (mono_method_same_domain): New function to return
22703         whenever the caller and the callee are in the same domain.
22704
22705         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22706
22707 2003-10-30  Martin Baulig  <martin@ximian.com>
22708
22709         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22710         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22711         method parameters.
22712         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22713         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22714
22715 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22716
22717         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22718         propagation.
22719
22720         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22721         object here, so it is in the correct appdomain etc.
22722
22723 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22726         already done.
22727         (mono_method_to_ir): Avoid freeing the type created returned from
22728         mono_type_create_from_typespec, since it is put into an internal cache
22729         by the function. Fixes pointer.exe.
22730
22731         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22732         trampolines for icalls and pinvokes as well. Fixes #33569.
22733
22734 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * mini.c: Update after appdomain changes.
22737
22738         * mini.c (mono_jit_compile_method_inner): Allways compile native
22739         method wrappers in the root domain, since there can only be one
22740         instance of them, whose address is stored in method->info.
22741
22742 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22743
22744         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22745         environment variable. Instead detect automatically whenever running
22746         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22747         valgrind.h.
22748
22749 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22750
22751         * trace.c, trace.h: New files that implement the new trace option
22752         parsing. 
22753
22754         * driver.c: Document new --trace options.
22755
22756         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22757         mini-x86.c: Apply:
22758
22759         -       if (mono_jit_trace_calls)
22760         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22761
22762         * mini.h: prototypes.
22763         
22764 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22765
22766         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22767
22768         * mini.c inssel.brg: Implement typedefbyref opcodes.
22769
22770         * mini.c (mono_jit_compile_method): Remove unused local variable.
22771
22772         * mini.c (mono_jit_compile_method_inner): Ditto.
22773         
22774 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22775
22776         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22777         
22778         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22779
22780 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22781
22782         * mini.c (mono_no_aot): Remove unused global variable.
22783
22784         * mini.c: Thread safety fixes.
22785
22786 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22787
22788         * mini.c (mono_create_class_init_trampoline): Add a lock around
22789         class_init_hash_addr.
22790
22791         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22792         #30073.
22793
22794         * mini.c: Decompose the NEWARR instruction before decomposing its
22795         arguments. Fixes #30073.
22796
22797 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22800         convention.
22801
22802 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22803
22804         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22805
22806         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22807
22808         * driver.c: Add support for compiling icall wrappers to --compile.
22809
22810 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * inssel.brg: The empty value in class->interface_offsets is -1, not
22813         0. Fixes #49287.
22814
22815 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22816
22817         * objects.cs: New test for 'is' operator on an array of interfaces.
22818
22819 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22820
22821         * tramp-ppc.c: update trampoline code to support jumps
22822         and class initialization.
22823
22824 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22825
22826         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22827
22828         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22829
22830         * inssel.brg (OP_UNBOX): Remove unused rule.
22831
22832         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22833         region instead of one for each method. Fixes #47813.
22834
22835 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22836
22837         * exceptions.cs (test_0_nested_finally): New regression test for
22838         nested exception handlers.
22839
22840         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22841
22842         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22843
22844         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22845         inlining.
22846
22847         * mini.c (mono_method_check_inlining): Make the inlining limit 
22848         configurable by an environment variable.
22849         
22850         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22851
22852         * mini.h: Bump AOT file version.
22853
22854         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22855         token, store the image along with the token, since the token might not 
22856         refer to the same image as the method containing the relocation, 
22857         because of inlining.
22858
22859 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22860
22861         * mini.c (mono_precompile_assemblies): New function to compile
22862         all methods in all loaded assemblies.
22863
22864         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22865
22866         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22867         iassign and fassign to int*, since they can contain large negative
22868         values if the register is spilled. Also added some comments. Fixes
22869         #45817.
22870
22871         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22872         under Win32. Fixes #42964.
22873
22874 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22875
22876         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22877
22878         * aot.c: Added support for AOT compiling methods which contain calls
22879         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22880         handled.
22881         
22882         * driver.c (compile_all_methods): Run the compilation in a thread
22883         managed by mono. Fixes #44023.
22884
22885         * mini.c (mono_codegen): Print full method name in verbose output.
22886
22887         * mini-x86.c (mono_arch_patch_code): Fix warning.
22888         
22889         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22890         jumps, since the method we are jumping to might be domain-specific.
22891
22892         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22893
22894 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22895
22896         * inssel.brg: string chars are unsigned.
22897
22898 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * TODO: New todo item.
22901
22902         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22903         which calls mono_runtime_class_init and patches the call site to
22904         avoid further calls.
22905         (mono_arch_create_class_init_trampoline): New arch specific function 
22906         to create a class init trampoline.
22907         (create_trampoline_code): Generalized so it can create
22908         class init trampolines as well.
22909
22910         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22911         (mono_create_class_init_trampoline): New function to create and cache
22912         class init trampolines.
22913         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22914         vtable given the address of a class init trampoline. Used by the
22915         patching process.
22916         (mono_codegen): Generate a call to a trampoline instead of
22917         mono_runtime_class_init in LDSFLD[A].
22918         (mono_codegen): Add relocations for the new trampoline.
22919         
22920         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22921         MONO_PATCH_INFO_CLASS_INIT.
22922
22923         * mini.h: Bump AOT version number.
22924
22925         * aot.c: Create a copy of the loaded code instead of using the original
22926         so methods which call each other will be close in memory, improving
22927         cache behaviour.
22928         
22929         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22930         patch since it breaks the regression tests.
22931         
22932         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22933         for the register saving instruction sequence since the 
22934         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22935
22936 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22937
22938         * TODO: Fix todo item && remove another.
22939
22940 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22941
22942         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22943         previous checkin.
22944
22945         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22946         function of the module.
22947
22948         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22949         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22950         --no-aot command line option.
22951
22952 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22953
22954         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22955         by Bernie Solomon (bernard@ugsolutions.com).
22956
22957         * inssel.brg: Refactor the interface offset table related code into
22958         its separate functions and add support for the AOT case.
22959
22960 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22961
22962         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22963         
22964         * aot.c: Added mono_aot_verbose variable and made all debugging
22965         output depend on the value of this variable.
22966
22967         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22968         method_label and info_label.
22969
22970         * mini.h mini-x86.c aot.c: Added a new relocation type 
22971         MONO_PATCH_INFO_IID for klass->interface_id.
22972
22973         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22974         the MonoJitInfo structure.
22975
22976         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22977         a non-root appdomain in shared mode.
22978
22979 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22980
22981         * aot.c: make aot loader less verbose. Remove free of unused variable.
22982
22983 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22984
22985         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22986
22987         * .cvsignore: Added *.dll.
22988
22989         * mini.c (mono_print_tree_nl): New function callable while debugging.
22990
22991         * mini.c (mono_print_code): Export this.
22992
22993         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22994         patched code.
22995
22996 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22997
22998         * mini.h (MonoCompile): Added 'jit_info' field.
22999
23000         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23001         the cfg structure, since it is needed by the AOT compiler.
23002
23003         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23004
23005         * aot.c: A major rewrite. Changes include:
23006         - save exception tables for methods which have them.
23007         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23008         to g_module_symbol.
23009         - reworked the file format so it is now much smaller and needs
23010         fewer relocation entries.
23011         
23012 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23013
23014         * aot.c (load_aot_module): Fix build bustage on platforms without
23015         Boehm GC.
23016
23017 2003-09-04  Martin Baulig  <martin@ximian.com>
23018
23019         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23020
23021 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * TODO: Some new optimization ideas.
23024
23025         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23026
23027         * aot.c: Save the optimization flags used to compile the code into
23028         the AOT module.
23029
23030         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23031         support emitting domain specific code.
23032         
23033         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23034         no longer domain neutral. It can be made domain neutral by compiling 
23035         with --optimize=shared.
23036
23037         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23038         between appdomains.
23039
23040         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23041         loading of AOT code.
23042
23043         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23044         
23045         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23046         if there is no domain neutrality information.
23047
23048 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23049
23050         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23051         format version into the generated library.
23052
23053         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23054         callee method into the caller since one of them could be shared.
23055
23056         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23057         system exceptions from AOT code now works.
23058
23059         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23060         method if it is domain neutral and the callee is not.
23061
23062         * graph.c (cfg_emit_one_loop_level): Fix warning.
23063
23064 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23065
23066         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23067         last checkin.
23068
23069 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23070
23071         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23072         is needed  by code which is executed before mono_runtime_init ().
23073         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23074         
23075         * mini.c (mono_thread_abort): Fix warning.
23076         (mono_jit_compile_method): Call static constructor in the AOT case too.
23077
23078         * aot.c (mono_compile_assembly): Fix warning.
23079
23080 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23081
23082         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23083
23084 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23085
23086         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23087
23088         * cpu-pentium.md: Fix the length of call opcodes so they include the
23089         ESP restoring instruction. Fixes #47968.
23090
23091 2003-08-28  Martin Baulig  <martin@ximian.com>
23092
23093         * mini-x86.c (mono_arch_call_opcode): Added support for
23094         MONO_TYPE_GENERICINST.
23095
23096         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23097
23098 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23099
23100         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23101         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23102
23103         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23104         metadata_section.
23105
23106 2003-08-26  Martin Baulig  <martin@ximian.com>
23107
23108         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23109         when reporting an error, set this to the actual error location.
23110         (mono_method_to_ir): Report the correct error location if
23111         get_basic_blocks() returned an error.
23112
23113 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23114
23115         * mini.c (mono_type_blittable): OBJECT is not blittable.
23116         (mono_method_blittable): Methods which have marshalling descriptors
23117         are not blittable either. Fixes #47842.
23118
23119 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23120
23121         * driver.c mini.c: Use an environment variable instead of a global 
23122         variable. Also fix the build.
23123
23124         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23125         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23126         reporting this. 
23127
23128         * driver.c mini.c: Added --with-valgrind option to turn off some
23129         code which prevents mono from running under valgrind.
23130
23131         * mini.c (mono_emit_call_args): Fixed warning.
23132
23133         * mini.c (mono_emulate_opcode): Fixed warning.
23134
23135 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23136
23137         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23138         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23139         regalloc.c, regalloc.h: specify available registers in arch-specific
23140         code and support floats in the regallocator (patch by Laurent Morichetti 
23141         <l_m@pacbell.net>)
23142
23143 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23144
23145         * mini.c: mono_thread_current() can be called only after
23146         mono_runtime_init(): rearrange code to not call it early on.
23147
23148 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23149
23150         * mini.c: allocate jump tables in the code mempools.
23151
23152 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23153
23154         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23155         freed.
23156
23157 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23158
23159         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23160         12 to 16.  This fixes bug #47453.
23161
23162
23163 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23164
23165         * mini-ppc.c: fixed indexed load and unsigned compares.
23166
23167 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23168
23169         * mini.c: reenabled installation of handler for
23170           thread abort signal.
23171
23172 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23173
23174         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23175         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23176         until it's fixed and actually useful.
23177
23178 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23179
23180         * inssel-long32.brg: couple more opcodes implemented.
23181
23182 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23183         
23184         * mini-sparc.c: Even more opcodes implemeted.
23185
23186 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23187
23188         * mini-sparc.c: More opcodes implemented.
23189
23190 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23191
23192         * mini-sparc.c: More opcodes implemented.
23193
23194 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23195
23196         * inssel-sparc.brg: Add some needed rules.  Direct
23197         copy from PPC.
23198         * Makefile.am: Use inssel-sparc.brg
23199         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23200         an assert happy for now.
23201
23202 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23203
23204         * mini-sparc.c: Fixed compile errors.
23205         * exceptions-sparc.c: Same.  We now produce a mono binary 
23206         on sparc-linux.  Yea.
23207
23208 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23209
23210         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23211         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23212         They compile, but do not work.
23213
23214 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23215
23216         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23217         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23218         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23219         (ct@gentoo.org).
23220
23221 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23222
23223         * mini.c: more opcodes implemented and better support for generics.
23224
23225 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23226
23227         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23228         * mini.c, mini.h: first cut at generics support: some new instructions 
23229         added and changed the behaviour of some of the existing ones.
23230
23231 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23232
23233         * mini.c: Removed definition of metadata_shared mutex here.
23234
23235 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23236
23237         * mini-x86.c: make vararg calls work for instance methods.
23238
23239 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23240
23241         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23242         returns the arguments in a separte list, now.
23243
23244 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23245
23246         * aot.c, mini.c: updates for array type representation changes.
23247
23248 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23249
23250         * mini.c: register function to perform jit shutdown.
23251
23252 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23253
23254         * mini.c: use a faster allocator if possible.
23255
23256 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23257
23258         * aot.c: some cleanups and portability changes.
23259
23260 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23261
23262         * mini.c: use faster allocation for CEE_BOX if possible.
23263
23264 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23267         Moved inlined mempcy code to its own function so that is can be
23268         reused. Added an inline memset function as well (optimized initobj).
23269         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23270
23271 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23272
23273         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23274
23275 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23276
23277         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23278         arch code can setup the cpu for CLR execution, if needed.
23279         We use it on x86 to set the precision of FP operations.
23280
23281 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23282
23283         * mini.c: disable some optimizations if we can guess they'll cost too
23284         much for a given method.
23285
23286 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23289         
23290 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23291         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23292         info collection support.
23293
23294 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23295
23296         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23297         is now implemented in the profiling API. Get rid of a couple of
23298         unnecessary global variables.
23299
23300 2003-06-15  Nick Drochak <ndrochak@gol.com>
23301
23302         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23303         * cpu-g4.md: add op_bigmul and op_bigmul_un
23304         * cpu_pentium.md: add op_bigmul_un
23305         * inssel-long32.brg: add rule for unsigned bigmul
23306         * mini-ops.h: define OP_BIGMUL_UN
23307         * mini-x86.c: THE BUG: handle (un)signed properly
23308         * mini.c: choose unsigned opcode if needed.
23309         This set of patches fixes bug #44291
23310
23311 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23312
23313         * mini.c (optimize_branches): improved to handle all kinds of
23314         conditional branches.
23315
23316 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23317
23318         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23319         don't raise exceptions.
23320
23321 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23322
23323         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23324         to arch-specific files.
23325
23326 2003-06-09  Martin Baulig  <martin@ximian.com>
23327
23328         * Makefile.am (libs): Added $(LIBGC_LIBS).
23329
23330 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23331
23332         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23333         and OP_ATAN (fixes bug#44293).
23334
23335 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23336
23337         * Makefile.am, mini-x86.c: rename cpu description array to
23338         pentium_desc, since some compilers define the 'pentium' preprocessor
23339         symbol.
23340
23341 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23342
23343         * mini.c (mini_select_instructions): add explicit branch if the
23344         following block is not the false target of a conditional branch -
23345         we need this with any optimization that reorder or remove bblocks
23346
23347         * mini.c (optimize_branches): bug fixes
23348
23349 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23350
23351         * mini.c (mono_method_to_ir): inline static readonly fields
23352
23353         * ssa.c (fold_tree): start cfold support for long (very simple
23354         cases only)
23355
23356         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23357
23358 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23359
23360         * inssel.brg: fixed memcpy (bug #44219).
23361
23362 2003-06-05  Dick Porter  <dick@ximian.com>
23363
23364         * driver.c: Set the glib log levels to not abort if g_message
23365         recurses.
23366
23367         g_set_prgname() has to happen before mini_init() so that the
23368         process handle gets the info.
23369         
23370 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23371
23372         * driver.c: add intrins to the default optimizations to get wider
23373         exposure.
23374
23375 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23376
23377         * mini.h: some large basic blocks will overflow a 16-bit
23378         integers for symbolic registers.
23379
23380 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23381
23382         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23383         (mono_arch_output_basic_block): fix bug 43499 
23384
23385 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23386
23387         * mini.c: kill duplicated definition of mono_debug_format.
23388
23389 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23390
23391         * mini-x86.c, arrays.cs: fixed register allocation bug.
23392
23393 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23394
23395         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23396
23397         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23398
23399 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23400
23401         * mini.c:
23402         (print_method_from_ip): also print source location information if
23403         available.
23404
23405 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23406
23407         * mini.c (mono_find_block_region): bug fix in region code
23408         (mini_method_compile): enable removing unreachable code again, but
23409         only in methods without exception clauses.
23410
23411 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23412
23413         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23414         Implemented arglist opcode and handling of TypedReference type.
23415         Fixed x86 call convention when a structure is returned.
23416         Minimal support for calling static vararg methods.
23417
23418 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23419
23420         * mini.c (mini_method_compile):  always remove unreachable code,
23421         because the code in them may be inconsistent  (access to dead
23422         variables for example).
23423
23424 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23425
23426         * driver.c, debug-mini.c: warning fixes.
23427
23428 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23429
23430         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23431
23432 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23433
23434         * mini.c: thread-static fields are registered in mono_class_vtable(),
23435         so ensure the function is called before checking for them.
23436
23437 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23438
23439         * mini.c (optimize_branches): fix for bug 43586
23440
23441         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23442         overflow (fixes Bug #43639)
23443
23444 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23445
23446         * mini.c, objects.cs: allow the use of stobj for primitive types.
23447
23448 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23449
23450         * mini.c: be less strict about argument checking until we support
23451         running the verifier.
23452
23453 2003-05-27  Nick Drochak <ndrochak@gol.com>
23454
23455         * basic-long.cs: tests for (ulong)int * (ulong)int also
23456         * mini.c: use the same trick for (ulong)int * (ulong)int
23457
23458 2003-05-27  Nick Drochak <ndrochak@gol.com>
23459
23460         * basic-long.cs: add regression test for (long)int * (long)int
23461         * cpu-pentium.md: add op_bigmul specification
23462         * inssel-long32.brg: add OP_BIGMUL rule
23463         * mini-ops.h: add OP_BIGMUL
23464         * mini-x86.c: register allocator: handle case where src1 needs to be
23465         in EAX.
23466         * mini.c: substitute special BIGMUL opcode in the tree for 
23467         (long)int * (long)int
23468
23469 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23470
23471         * jit-icalls.c: call the type ctor on field access if needed.
23472
23473 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23474
23475         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23476         to a method (including results of ldelema, bug#43207).
23477
23478 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23479
23480         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23481         colors to show exception handler blocks.
23482
23483         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23484         (fix for pinvoke7.cs).
23485
23486 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23487
23488         * mini.h, mini.c: ensure correct initialization order for types that
23489         require it. Prepare for lazy compilation of jit icall wrappers.
23490         Provide a name for opcode emulation to reduce unneeded mallocing.
23491
23492 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23493
23494         * mini-x86.c: better register restoring code and profiling
23495         support for tail calls.
23496
23497 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23498
23499         * mini.h, driver.c: prepare for leaf methods optimization.
23500
23501 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23502
23503         * mini.c: get targets of branches before converting a method.
23504
23505 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23506
23507         * mini.c (optimize_branches): added some experimental code (disbaled) 
23508
23509 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23510
23511         * mini.c (optimize_branches): fix branch to branch optimization 
23512
23513         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23514
23515         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23516
23517         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23518
23519         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23520         if needed.
23521
23522 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23523
23524         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23525         enable use of interface variables again.
23526
23527         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23528         I1 to registers because there is no simply way to sign extend 8bit
23529         quantities in caller saved registers on x86.
23530
23531         * inssel-float.brg: set costs of some rules to 2 so
23532         that monobure always select the arch. specific ones if supplied,
23533         regardless of the order we pass the files to monoburg.
23534
23535 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23536
23537         * mini.c, mini-x86.c: since the magic trampoline for jumps
23538         can't patch the code directly, we do it as soon as the
23539         method gets compiled.
23540
23541 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23542
23543         * mini-x86.c, mini.h: introduce a new patching method
23544         to support CEE_JMP and tail calls.
23545         * mini.c: obey tail.call. Don't precompile methods target
23546         of CEE_JMP.
23547         * tramp-x86.c: new trampoline code to handle methods
23548         reached through a jump.
23549
23550 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23551
23552         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23553         bit values to registers
23554
23555 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23556
23557         * mini.c (mono_compile_get_interface_var): share interface
23558         variables if possible.
23559
23560 2003-05-16  Martin Baulig  <martin@ximian.com>
23561
23562         * debug-mini.c (mono_init_debugger): New function to initialize
23563         the debugger.  This is not in the debugger since it needs to
23564         access some of mini's internals.
23565
23566 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23567
23568         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23569
23570 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23571
23572         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23573         for value type handling.
23574
23575 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23576
23577         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23578         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23579
23580 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23581
23582         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23583           the constructor through a proxy.
23584
23585 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23586
23587         * jit-icalls.c, inssel.brg: fixes to array element address
23588         calculations.
23589
23590 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23591
23592         * mini-x86.c (is_regsize_var): allocate pointer to registers
23593
23594 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23595
23596         * driver.c: fixed typo, added intrins to the set of optimizations
23597         tested with regressions.
23598
23599 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23600
23601         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23602         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23603         test case.
23604
23605 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23606
23607         * inssel.brg: remove some common pop instructions without side effects
23608
23609 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * inssel-x86.brg: fixed thinko in int to double conversions.
23612
23613 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23614
23615         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23616
23617 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23618
23619         * inssel-long32.brg: two more missing instructions.
23620
23621 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23622
23623         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23624         if not already set.
23625
23626 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23627
23628         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23629         correctly.
23630
23631         * basic-float.cs: Added tests for negative zero.
23632
23633 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23634
23635         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23636         a couple of missing operations for long casts, with test cases.
23637
23638 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23639
23640         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23641
23642 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23643
23644         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23645         code size estimation.
23646
23647 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23648
23649         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23650         abstract methods (fix bug 42542)
23651
23652         * aot.c: add ability to handle array types
23653         
23654 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * mini.c: Call the _specific versions of the object allocation
23657         functions if possible.
23658
23659 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23660
23661         * driver.c: call setlocale ().
23662
23663 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23664
23665         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23666         windows build.
23667
23668 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23669
23670         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23671
23672         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23673         wrappers (fix bug 42122)
23674
23675 2003-05-04  Martin Baulig  <martin@ximian.com>
23676
23677         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23678
23679         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23680         s/mini_set_defaults/mono_set_defaults/g.
23681
23682 2003-05-04  Martin Baulig  <martin@ximian.com>
23683
23684         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23685
23686 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23687
23688         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23689         (reported by Don Roberts).
23690
23691 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23692
23693         * mini.c: temporarily work around two bugs for this release.
23694
23695 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23696
23697         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23698         that contains -export-dynamic and it makes using the ld script
23699         useless.
23700         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23701
23702 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23703
23704         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23705         specific cpu.
23706
23707 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23708
23709         * mini.c: make sure leave calls all the needed finally blocks,
23710         even when the target jumps out of multiple exception clauses.
23711
23712 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23713
23714         * ldscript, Makefile.am: add linker script to reduce the number of
23715         exported symbols (should also fix the issues with libwine defining
23716         some of the same symbols in io-layer).
23717
23718 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23719
23720         * driver.c (mini_main): Avoid assertion when no file name is given on 
23721         the command line.
23722
23723 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23724
23725         * driver.c: added --version/-V command line option.
23726         Added the inline optimization in the regression tests.
23727
23728 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23729
23730         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23731         to the type in the method signature (fixes bug#42134).
23732
23733 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23734
23735         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23736
23737 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23738
23739         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23740
23741 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23742
23743         * driver.c: fixed bug #42100.
23744
23745 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23746
23747         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23748
23749 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23750
23751         * mini.c: moved most of the code required to do inlining to its own
23752         function so it can be reused. Inline also ctors if appropriate.
23753
23754 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23755
23756         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23757         the runtime can call mono API functions.
23758
23759 2003-04-27  Martin Baulig  <martin@ximian.com>
23760
23761         * debug-mini.c (mono_debug_init_method): Added
23762         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23763         send a notification to the debugger.
23764
23765         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23766         running in the Mono Debugger, just pass the breakpoint number to
23767         mono_debug_init_method().
23768
23769         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23770
23771 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23772
23773         * mini.c: allow some more unsafe compares.
23774
23775 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23776
23777         * mini-x86.c, Makefile.am: make distcheck works (partially from
23778         a patch by Richard Lee <r.h.lee@attbi.com>).
23779         * regset.c, regset.h: removed, they are unused.
23780
23781 2003-04-25  Dick Porter  <dick@ximian.com>
23782
23783         * driver.c: Usage reports the name as 'mono' not 'mini'
23784         * exceptions-x86.c: Build and run on freebsd
23785
23786 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23787
23788         * Makefile.am: install the program with the 'mono' name and
23789         the library as libmono instead of mini and libmini.
23790
23791 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23792
23793         * driver.c: provide the APIs for the embedding interface of the old jit.
23794
23795 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23796
23797         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23798
23799 2003-04-23  Martin Baulig  <martin@ximian.com>
23800
23801         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23802
23803         * driver.c: Added `--debug' command line argument to enable
23804         debugging support.
23805
23806 2003-04-23  Martin Baulig  <martin@ximian.com>
23807
23808         * debug.[ch]: Removed.  The code is now in
23809         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23810
23811         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23812         last six months.
23813
23814 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23815
23816         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23817
23818 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23819
23820         * mini.c:
23821         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23822         mono_domain_finalize.
23823         (mini_method_compile): use mono_method_profile* if the the option is
23824         enabled.
23825
23826 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23827
23828         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23829         methods with their wrapper.
23830
23831         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23832         methods with their wrapper.
23833
23834         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23835         their wrapper.
23836
23837         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23838         wrapper.
23839
23840         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23841         methods.
23842
23843 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23844
23845         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23846
23847 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23848
23849         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23850         of the mempool. This is slightly faster and uses less memory
23851
23852 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23853
23854         * mini.c: avoid O(n) allocation for variables.
23855
23856 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23857
23858         * mini.c: handle items on the stack after inlining methods.
23859
23860 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23861
23862         * mini.c: make the method->opcode optimization dependent
23863         on MONO_OPT_INSTRINS and do it lazily.
23864
23865 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23866
23867         * driver.c: print overall results at the end of regression run.
23868
23869 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23870
23871         * inssel.brg: don't overwrite symbolic registers.
23872
23873 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * inssel-x86.brg: fix conversion from long to float.
23876
23877 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23878
23879         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23880
23881 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23882
23883         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23884
23885         * driver.c: Added --print-vtable option as in the old JIT.
23886
23887 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23888
23889         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23890
23891 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23892
23893         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23894
23895 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * mini.c regalloc.c regalloc.h: Fix memory leak.
23898
23899 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23900
23901         * aot.c (mono_aot_get_method): register all used strings
23902
23903 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23904
23905         * mini.c: always intern strings references with ldstr at compile time.
23906
23907 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23908
23909         * Makefile.am: add BUILT_SOURCES.
23910
23911 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23912
23913         * driver.c: give a better error message when the assembly to execute
23914         doesn't have an entry point.
23915
23916 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23917
23918         * Makefile.am: added hack for automake
23919
23920         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23921         correct sematics.
23922
23923         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23924
23925 22003-04-07  Martin Baulig  <martin@ximian.com>
23926
23927         * Makefile.am: Added Makefile.am.
23928
23929         * debugger-main.c: Removed, this is now in the debugger where it
23930         belongs.
23931
23932         * mini.pc.in: Call this package `mini' for the moment.
23933
23934
23935
23936
23937
23938
23939
23940
23941
23942
23943
23944
23945
23946
23947