2010-07-04 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
4         regs [ARMREG_FP] instead.
5
6         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
7
8         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
9         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
10
11         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
12
13         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
14
15         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
16
17         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
18         without IMT_REG defined (ARM).
19
20         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
21         the trampolines.
22
23 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
24
25         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
26
27 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
28
29         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
30         definitions to match their declarations and vice-versa.
31
32 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
33
34         * Makefile.am (common_sources): Add mini-llvm.h.
35
36         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
37
38 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
39
40         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
41         compiling.
42
43 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
44
45         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
46         implemt the option of loading the llvm backend from a module so
47         that we can have a single binary and the bloat from llvm is
48         only experienced when it is actually loaded.
49
50 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
51
52         * mini-llvm.c: remove direct access to mono_defaults.
53
54 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
55
56         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
57         a no-op.
58
59         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
60
61         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
62         is now mono_arch_nullify_class_init_trampoline ().
63         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
64         opcodes, they are no longer needed.
65
66         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
67         now mono_arch_nullify_class_init_trampoline ().
68         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
69         opcodes, they are no longer needed.
70
71         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
72         vtable on platforms which support it.
73
74         * driver.c: Print the full LLVM version we are compiled against in --version.
75
76         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
77         a bit better. Decode nesting information to fix eh support for llvm+aot.
78
79         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
80         methods.
81
82         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
83
84         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
85         is always passed as the first argument, before the vtype ret arg. This simplifies
86         get_this_arg_reg () and LLVM integration.
87
88 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
89
90         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
91         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
92         most of the vcall specific code to mono_vcall_trampoline () from
93         common_call_trampoline ().
94
95 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
96
97         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
98         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
99         if the callsite is patched.
100
101         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
102         the llvm branch.
103
104         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
105         the trampoline in the xdebug info.
106
107         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
108         as well.
109
110 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini-llvm.c: Fix a few problems exposed by make check.
113
114 2010-06-25  Mark Probst  <mark.probst@gmail.com>
115
116         * mini-trampolines.c (common_call_trampoline): An ugly hack to
117         work around a potentially very hard to fix problem with inflating
118         generic methods.
119
120 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
121
122         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
123         problem has been fixes.
124
125 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
126
127         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
128
129         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
130         It might be be better to define a MonoGCJitOptions structure later and have the
131         GC return that.
132
133         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
134
135         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
136
137         * debugger-agent.c (get_objref): Implement support for sgen.
138
139         * driver.c: Remove the unused gc_wrapper.h include.
140
141         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
142         implementation.
143
144 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
145
146         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
147
148         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
149         in MonoCompile.
150
151         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
152         instead.
153
154 2010-06-23  Miguel de Icaza  <miguel@novell.com>
155
156         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
157         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
158
159         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
160         it only for Boehm diagnostics.
161
162         * Makefile.am: Make the file a bit more consistent.
163
164         * debug-debugger.c: Wrap the entire file with an #ifdef
165         MONO_DEBUGGER_SUPPORTED to simplify the build.
166
167         * Makefile.am: Fix the opcodes build issue by including the
168         source, not by including the .lo file directly
169
170         Always bring the MDB sources into the build, to drop the
171         dependency on the AM_CONDITIONAL from configure.in as the hard
172         debugger supports Boehm, but not Sgen, this simplifies the build. 
173
174         * Renamed the *.s files into *.S
175
176 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
179         wb for now on 64bits systems while issues with valuetype returns
180         are not fixed.
181
182 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
183
184         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
185         passes by calling createStandardFunctionPasses ().
186
187 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
188
189         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
190
191 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
192
193         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
194         MONO_INST_FAULT.
195
196         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
197         allow better optimization if the OP_LDADDR which caused the flag to be set was
198         optimized away.
199
200         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
201
202         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
203         the type token.
204
205         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
206
207         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
208
209 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
210
211         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
212         to handle the code sequence generated for non-near calls. Fixes #616056.
213
214 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
215
216         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
217
218         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
219
220         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
221         nesting clause too.
222         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
223         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
224         trampoline which saves the context, so changes made to callee saved registers in
225         finally clauses are visible to a nesting catch clause.
226
227         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
228
229         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
230         in LLVM compiled code.
231         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
232         the finally handler has ran.
233
234         * mini.h (ResumeState): New structure containing information required to resume
235         exception handling after executing LLVM compiled finally clauses.
236
237         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
238         bit, by passing all the registers as one argument.
239
240 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
241
242         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
243         to avoid an assert.
244
245 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
246
247         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
248
249         * aot-compiler.c aot-runtime.c: Fix LLVM support.
250
251         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
252         pad, branch to a new bblock instead.
253
254         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
255         orig_method.
256
257         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
258
259         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
260
261 2010-06-17  Geoff Norton  <gnorton@novell.com>
262
263         * mini-arm.h:
264         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
265         can be used by sgen.
266
267 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
268
269         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
270
271         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
272         fails.
273
274         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
275         the ip done by throw_exception (), it is not needed for corlib exceptions.
276
277 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
280         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
281         of size > 5 words. This support fast barriers for value types up to
282         256/512 bytes which     beyond that the copying itself is the major issue.
283
284         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
285         for gsharing, so use it.
286
287         This eliminate all calls to mono_value_copy from managed code in
288         gmcs, fsharp and ipy.
289
290         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
291
292         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
293         performance kept
294
295         * mini.c (mini_init): Register new icall.
296
297 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
298
299         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
300         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
301
302 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
303
304         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
305         value types as the overhead is huge. Manually expand it up to 5 words to
306         avoid code bloat.
307
308         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
309         is an exception that performance is dominated by mono_value_copy.
310
311         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
312
313 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
314
315         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
316         trampolines on x86, since those have their own cconv.
317
318         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
319         exception trampolines.
320
321         * tramp-x86.c: Add xdebug info for a few trampolines.
322
323         * mini-llvm.c: Set the name of the arguments.
324
325         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
326         using a block address if using the LLVM mono branch.
327
328         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
329         trampolines.
330
331 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
332
333         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
334
335         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
336
337         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
338
339         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
340
341         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
342         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
343         to identify the vtable slot address plus the method which needs to be compiled.
344
345         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
346         using llvm.
347
348         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
349         'this' is always passed as the first argument, before the vtype ret arg. This
350         simplifies get_this_arg_reg () and LLVM integration.
351
352         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
353         the latest changes.
354
355         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
356         these trampolines.
357
358         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
359
360         * mini-llvm.c: Fix compilation with llvm 2.6.
361
362         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
363
364         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
365         defined.
366
367         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
368         is always passed as the first argument, before the vtype ret arg. This simplifies
369         get_this_arg_reg () and LLVM integration.
370
371 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
372
373         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
374
375         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
376         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
377         translate into much nicer code.
378
379 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
380
381         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
382         parameter index information. Use this to simplify a lot of code.
383
384         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
385
386 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
387
388         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
389         to fix infinite generic recursion. Fixes #612702.
390
391 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
392
393         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
394         imt trampoline per imt slot when using LLVM.
395
396 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
397
398         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
399
400 2010-06-09  Levi Bard  <levi@unity3d.com>
401
402         * debugger-agent.c: Clear unloaded types on appdomain unload.
403
404 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
405
406         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
407         Fixes #612206.
408
409         * exceptions.cs: Add a test.
410
411 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
412
413         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
414
415         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
416
417         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
418         so it doesn't have to do it.
419
420         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
421         process does not mix with ours.
422
423         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
424         ones.
425
426         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
427         loads/stores which can throw exceptions inside clauses.
428
429 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
430
431         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
432         one ENDFINALLY.
433
434         * mini.c (mini_init): Register mono_resume_unwind as an icall.
435
436 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
437
438         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
439
440         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
441         locals.
442
443 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
444
445         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
446         appdomain.
447
448 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
449
450         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
451         Use a separate generic class init trampoline for llvm, since it needs a different
452         signature.
453
454         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
455         includes the location of this/rgctx.
456
457         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
458         branch.
459
460 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
461
462         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
463
464         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
465         clause.
466
467 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
468
469         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
470         says so.
471
472         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
473
474         * aot-compiler.c (patch_to_string): New debugging helper function.
475
476 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
477
478         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
479         trampoline.
480
481         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
482
483         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
484
485         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
486
487         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
488         clauses.
489
490         * mini.c (create_jit_info): Print EH clause info for LLVM too.
491
492 2010-05-28  Mark Probst  <mark.probst@gmail.com>
493
494         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
495         cpobj with reference types.
496
497 2010-05-28  Mark Probst  <mark.probst@gmail.com>
498
499         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
500         write barrier for reference types.
501
502 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
503
504         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
505         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
506
507 2010-05-31  Martin Baulig  <martin@ximian.com>
508
509         Fix #608271.
510
511         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
512         clear_breakpoint() on all breakpoint events and remove them from the list.
513
514 2010-05-27  Martin Baulig  <martin@ximian.com>
515
516         Fix #605698.
517
518         * debugger-agent.c (method_commands, type_commands): Temporarily
519         set the appdomain while executing this method; do all metadata
520         calls in the debuggee's appdomain where user assemblies are loaded.
521
522 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
523
524         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
525
526 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
527
528         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
529
530 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
531
532         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
533         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
534         be referenced even after the header is freed.
535
536         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
537         section.
538
539 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
540
541 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
542
543         * genmdesc.c (main): Fixing the detection of the nacl switch.
544
545         Code is contributed under MIT/X11 license.
546
547 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
548
549         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
550
551         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
552
553         * mini.h (LLVM_CHECK_VERSION): New helper macro.
554
555 2010-05-25  Miguel de Icaza  <miguel@novell.com>
556
557         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
558         the Perl program
559
560         * genmdesc.c: Added support for nacl: key on the machine
561         description files to support the extra space required by Google
562         Native Client.
563
564 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
565
566         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
567
568 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
569
570         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
571         mono_runtime_class_init_full ().
572         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
573
574 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
575
576         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
577
578 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
579
580         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
581         two are not the same on ilp32.
582
583 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
584
585         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
586         added by mistake.
587
588         * mini-ppc.c: Fix the DISABLE_JIT build.
589
590 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
591
592         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
593         (make_writable): Remove this unused function.
594
595 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
596
597         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
598         structure. Make the labels to plt entries local symbols instead of assembler local
599         labels, since tha latter causes problems for the iphone linker.
600
601 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
602
603         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
604
605 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
606
607         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
608         (ppc_patch_full): Ditto.
609
610         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
611
612         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
613         if gshared is enabled, to avoid asserts in the trampoline code.
614
615         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
616         on ia64.
617
618 2010-05-15  Geoff Norton  <gnorton@novell.com>
619
620         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
621         xdebug mode.
622
623 2010-05-14  Geoff Norton  <gnorton@novell.com>
624
625         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
626         misaligned stack on darwin.
627
628 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
629
630         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
631         arm.
632
633 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
634
635         * xdebug.c: Fix ARM support.
636
637 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
638
639         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
640         and do most of the work on the normal stack.
641         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
642
643 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
644
645         * aot-compiler.c: Put non-code data into the .rodata section on linux.
646
647 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
648
649         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
650
651 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
652
653         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
654         and do most of the work on the normal stack.
655
656 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
657
658         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
659         and do most of the work on the normal stack even if sigaltstack is disabled.
660
661 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
662
663         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
664         UCONTEXT_REG_ constants are available on linux as well.
665         (mono_arch_monoctx_to_sigctx): Ditto.
666         (mono_arch_ip_from_context): Ditto.
667
668 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
669
670         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
671         other domains.
672
673 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
674
675         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
676         no longer needed.
677
678 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
679
680         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
681         if a breakpoint cannot be inserted.
682
683 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
684
685         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
686
687 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
688
689         * debugger-agent.c (frame_commands): Return an error instead of asserting if
690         no JIT info is found for the method.
691
692 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
693
694         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
695         in debug printf.
696
697 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
700         a list of arch specific trampolines.
701
702         * aot-compiler.c (emit_trampolines): Use it.
703
704 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
705
706         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
707         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
708         get rid of the _full from their name.
709
710 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
711
712         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
713         get_nullified_class_init_trampoline to remove some code duplication.
714
715 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
716
717         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
718         attach.
719
720 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
721
722         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
723
724         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
725
726         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
727         there is no need to jump through the first plt entry.
728
729         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
730
731         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
732         arch-specific function.
733         (mono_aot_get_plt_info_offset): Ditto.
734
735         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
736         mono_arch_init () to register jit icalls called from full-aot trampolines.
737         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
738         to mini-<ARCH>.c.
739
740         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
741         the specialized throw corlib exception trampoline, use a variant of the normal
742         trampoline along with a new C function which does the call to
743         mono_exception_from_token (), just like on x86.
744
745 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
746
747         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
748         Reorganize the full aot trampoline creation functions, instead of taking a bunch
749         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
750         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
751         creation functions on architectures which have the full-aot ones.
752
753 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
754
755         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
756
757 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
758
759         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
760         explicitly, this seems to be required by some gcc versions at -O2.
761
762         * mini-arm.c: Ditto.
763
764 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
765
766         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
767         has_target delegate invokes.
768
769 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
770
771         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
772         info fields.
773
774         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
775         add patches/unwind info arguments, move to mini.c.
776
777         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
778
779 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
780
781         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
782         command which returns full path names.
783
784 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
785
786         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
787         code_size output variable.
788
789         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
790         mono_get_lmf_addr.
791         
792 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
793
794         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
795         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
796         (mono_arch_cpu_enumerate_simd_versions): Ditto.
797
798 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
799
800         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
801         apple assembler.
802
803 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
804
805         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
806
807 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
808
809         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
810
811 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
812
813         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
814
815 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
816
817         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
818         line number support works with eglib.
819
820 2010-04-27  Miguel de Icaza  <miguel@novell.com>
821
822         * driver.c, mini.c: Since linking with LLVM makes the default Mono
823         dirty an extra 70kb pages on startup we are now going to choose a
824         different strategy: ship mono and mono-llvm binaries, with the
825         second being the one that links with LLVM and defaults to LLVM
826         being enabled.
827
828 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
829
830         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
831         Implement full-aot support on x86.
832
833         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
834         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
835         the first register returned by get_global_int_regs ().
836
837         * cpu-x86.md: Fix the length of insertx_u1_slow.
838
839         * iltests.il.in: Disable tail call tests when running with full-aot.
840
841 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
842
843         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
844
845 2010-04-24  Mark Probst  <mark.probst@gmail.com>
846
847         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
848         in the initializer, because it's non-constant.
849
850 2010-04-23  Miguel de Icaza  <miguel@novell.com>
851
852         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
853         of LLVM on by default.   Used for buildbots and other setups.
854
855 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
856
857         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
858
859 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
860
861         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
862         initonly static fields when using moving GC.
863
864         Contributed under MIT/X11 license.
865
866 2010-04-23  Geoff Norton  <gnorton@novell.com>
867
868         * mini-amd64.h: Darwin x86_64 support.
869
870 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
871
872         * exceptions-arm.c: Remove platform checks in favor of configure checks.
873
874 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
875
876         * exceptions-arm.c: Add Android support for sigcontext structure.
877
878 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
879
880         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
881         wrappers correctly now that their wrapper info is NULL.
882
883 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini.c (mono_jit_compile_method_inner): Avoid calling
886         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
887
888 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
889
890         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
891         so the latter can be #ifndef DISABLE_JIT-ed.
892
893         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
894
895 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
896
897         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
898
899 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
902         stack.
903
904 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
905
906         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
907         calling mono_class_num_methods (). Fixes #592244.
908
909 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
910
911         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
912
913         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
914
915 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
916
917         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
918         version.
919         * (handle_alloc): Ditto.
920         (mono_method_to_ir): Remove the constrained call restriction added by a previous
921         change, its not needed anymore.
922
923 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
924
925         * mini-posix.c (sigusr1_signal_handler): Fix build on
926         non x86/amd64 systems.
927
928 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
929
930         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
931         calls where the constrained class needs a context. Fixes #595863.
932
933         * iltests.il.in: Add a test.
934
935 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
936
937         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
938         2.6/SVN seems to have broken support for them.
939
940 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
941
942         * mini-llvm.c: Fix support for LLVM 2.6.
943
944 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
945
946         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
947         MonoInternalThread belonging to the thread.
948
949 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
950
951         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
952         unsafe optimization that will remove bound checks.
953
954 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
955
956         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
957         CompareExchange not to be inlined for I8.
958
959         Contributed under MIT/X11 license.
960
961 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * array.cs: Add tests for cast between primitive array types.
964
965 2010-04-07 Andreia Gaita  <avidigal@novell.com>
966
967         * Makefile.am: create a convenience library for moon to link with
968
969 2010-04-07 Paolo Molaro <lupus@ximian.com>
970
971         * method-to-ir.c: optimize array accesses from generic interfaces.
972
973 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
974
975         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
976
977 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
978
979         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
980         of marshalbyref classes.
981
982         Fixes #515884.
983
984 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * aot-compiler.c (emit_exception_debug_info): Encode try holes
987         information.
988
989         * aot-runtime.c (decode_exception_debug_info): Decode try holes
990         information.
991
992         * mini.h: Increase AOT version.
993
994 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
995
996         * mini-x86.h: Only enable soft debugger when using sigaction or on
997         Windows. Fixes build on Haiku (lacks siginfo_t).
998
999         Code is contributed under MIT/X11 license.
1000
1001 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1002
1003         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1004         BeOS-style signal handlers.
1005
1006         Code is contributed under MIT/X11 license.
1007         
1008 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1011
1012 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * mini-exceptions.c: Fix win32 build.
1015
1016 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1017
1018         * mini.c, driver.c: Call mono_gc_base_init() before
1019         mono_debug_init().
1020
1021 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1022
1023         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1024         call_method]): Delegate the actual work in security-core-clr.c
1025         to ease code sharing.
1026
1027 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1030         float conv.ovf.un opcodes are encountered, instead of asserting later.
1031         Fixes #566296.
1032
1033 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1036
1037         * iltests.il.in: Add a test.
1038
1039 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1042         large. Fixes #567040.
1043
1044         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1045
1046 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1049         #592711.
1050
1051 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1052
1053         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1054         mono_create_handler_block_trampoline with the proper #ifdef so that it
1055         compiles on amd64.
1056
1057 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1058
1059         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1060         allows to select if it's new or old context that is passed to 
1061         the callback.
1062
1063         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1064         case when executing a guarded handler from the EH machinery.
1065
1066         * mini-exceptions.c (mono_install_handler_block_guard): New function
1067         responsible for checking for handler blocks, installing the guard and
1068         clearing abort state.
1069
1070         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1071         to check for handler blocks and skip interruption logic if one was found.
1072
1073         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1074         by the handler block guard trampoline. Resumes interruption by raising the
1075         pending ThreadAbortException.
1076
1077         * mini.c (create_jit_info): Calculate the end address of a finally block.
1078
1079         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1080         of a finally block to a specified address and return the old one.
1081
1082         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1083         trampoline patches the original return address and calls the trampoline function.
1084
1085 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1088
1089         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1090         does the patching if the callee is in the same domain.
1091
1092         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1093         of mono_arch_patch_plt_entry ().
1094
1095 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * mini.c (create_jit_info): Fix try block hole length encoding.
1098
1099 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1100
1101         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1102         duplicate information and print offsets instead of absolute addresses.
1103
1104 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1107         event is sent. Fixes #591733.
1108
1109 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1112         OpenBSD.
1113
1114 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1117         thread_to_tls hash table.
1118
1119         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1120         section. Fixes #591000.
1121
1122 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1123
1124         * Makefile.am (version.h): Check for pure .git directory only,
1125         fixes SVN revision when using git without git-svn.
1126
1127         Contributed under MIT/X11 license.
1128
1129 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1132
1133 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1134
1135         * basic-simd.cs: Test for vector x scalar binary operators.
1136
1137 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1138
1139         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1140         intrinsics with expanded scalar arguments.
1141
1142 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1145         don't have an exception class, so don't decode it. This would crash
1146         with filter clauses.
1147
1148 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1149
1150         Make sure that trunk builds with DISABLE_JIT, an update to the
1151         PlayStation 3 port.
1152         
1153         * mini.c (mini_get_shared_method): this code seems to be necessary
1154         regardless of whether DISABLE_JIT has been defined.
1155
1156         (mono_jit_compile_method_inner): it seems that this method is
1157         required even in full AOT mode, so ifdef out only the pieces that
1158         try to genrate code (the body of code that applies patches to the
1159         code).  
1160
1161         (mini_method_compile): do not compile when using DISABLE_JIT.
1162
1163         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1164         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1165         compile when DISABLE_JIT is set.
1166
1167 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1168
1169         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1170         arch really supports it.
1171
1172 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1173
1174         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1175
1176 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1177
1178         * exceptions-s390x.c: Add support for
1179         mono_arch_get_throw_corlib_exception and fix throw by name.
1180
1181         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1182         logic (especially for varargs); Correct localloc sizing; Add
1183         mono_arch_get_this_arg_from_call and
1184         mono_arch_get_this_arg_from_call.
1185
1186         * mini-s390x.h: Add support for facility list extraction;
1187         Correct/update MONO_ARCH_xxx settings.
1188
1189         * mini-s390.c: Minor corrections to instruction output for
1190         varargs. No IMT implementation - I think it's time to deprecate
1191         s390 and just leave s390x.
1192
1193         * tramp-s390x.c: Correct creation of trampoline instruction
1194
1195
1196         * cpu-s390x.md: Update some instruction lengths
1197
1198 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1199
1200         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1201         can be hit with partial sharing.
1202
1203         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1204         in non-shared classes correctly.
1205         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1206         Turn on partial sharing.
1207
1208 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1209
1210         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1211         by mistake.
1212
1213 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1214
1215         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1216         mono_method_signature ().
1217
1218         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1219
1220         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1221         error checking, so later calls do not need error checking.
1222
1223 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1226
1227         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1228
1229 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * mini-exceptions.c (mono_handle_exception_internal): Don't
1232         check try_end for archs different than s390. 
1233
1234         * mini.c (create_jit_info): Don't crash if the finallt block is the
1235         last one.
1236
1237 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1238
1239         * driver.c (mono_main): Don't free global codeman under linux since
1240         glic now peeks at code on stack for more archs than just amd64.
1241
1242 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1243
1244         * mini.c, method-to-ir.c: changes to support compressed interface
1245         bitmaps.
1246
1247 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1248
1249         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1250         Use sigaction on OpenBSD too.
1251
1252 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1255
1256 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1257
1258         * debugger-agent.c: #include sys/select.h for fd_set.
1259
1260         Code is contributed under MIT/X11 license.
1261
1262 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1263
1264         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1265         (openbsd+amd64 ?).
1266
1267 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1270         some large methods with lots of exception handlers. Fixes #440924.
1271
1272 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1273
1274         * method-to-ir.c: remove code duplication for interface checks.
1275
1276 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1279         (assembly_unload): Clear all event requests referencing the to-be unloaded
1280         assembly.
1281
1282
1283 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1284
1285         * mini.h, mini-exceptions.c: restore the state of the stack
1286         guard page permissions.
1287
1288 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1291         call site patching code, it doesn't appear to be needed.
1292
1293 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1296         sharing generic methods whose type arguments are a mix of reference and
1297         non-reference types. Not yet turned on.
1298
1299         * mini.c (mini_get_shared_method): New helper function to return
1300         the method which will be compiled/registered in the JIT tables when doing
1301         generic sharing.
1302         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1303         use mini_get_shared_method ().
1304
1305         * mini.c (mini_method_compile): Register the same method which is compiled when
1306         doing generic sharing.
1307
1308         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1309
1310         * generics.cs: Add partial sharing tests.
1311
1312 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1313
1314         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1315                    Add an enum value that or's all possable values together. Add an enum value
1316                    that marks the end of the used bit indexes.
1317
1318         * mini-amd64.c : Make changes to match the changes in mini.h 
1319
1320         * mini-x86.c : Make changes to match the changes in mini.h
1321
1322         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1323                    simd_version to support more simd versions. Changed the name of
1324                    simd_version to simd_version_flags to make it more intuitive that
1325                    it now contains bit flags. Reordered the *_intrinsics arrays to
1326                    match the changes above. Changed emit_intrinsics() to use the new
1327                    setup mentioned above.
1328
1329         Code is contributed under MIT/X11 license.
1330
1331 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1332
1333         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1334         remaining archs. Alpha and hppa maintainers, please stand up.
1335
1336 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1339         is needed even when fail_tramp!=NULL.
1340
1341 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * debugger-agent.c (insert_breakpoint): Write a log message.
1344
1345 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1346
1347         * iltests.il.in: Add a few tests for LEAVE going over multiple
1348         finally clauses.
1349
1350 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1351
1352          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1353
1354 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1355
1356         * mini.h (MonoBasicBlock): Add native_length field.
1357         * mini.h (MonoCompile): Add try_block_holes field.
1358         * mini.h (MonoInst): Add exception_clause pointer to
1359         the data union.
1360
1361         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1362         * mini.c (mono_cfg_add_try_hole): New function to register possible
1363         holes in try blocks.
1364         * mini.c (create_jit_info): Fill in the holes information.
1365
1366         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1367         by a try block.
1368
1369         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1370
1371 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1372
1373         * jit-icalls.c: adjusted for the array API changes.
1374
1375 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1376
1377         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1378
1379 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1382         the 'pending' flag. This fixes support for appdomains too.
1383
1384
1385 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1386
1387         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1388
1389 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1390
1391         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1392         when using LLVM, LLVM generates it itself when needed.
1393
1394         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1395
1396         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1397         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1398         OP_ANDNPS/OP_ANDNPD.
1399
1400 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1403         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1404         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1405
1406 2010-03-11  Martin Baulig  <martin@ximian.com>
1407
1408         * debugger-agent.c (type_commands): Add NULL check to
1409         `CMD_TYPE_GET_SOURCE_FILES'.
1410
1411 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1414
1415 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1418         #586664.
1419
1420         * iltests.il.in: Add a test.
1421
1422 2010-03-05  Martin Baulig  <martin@ximian.com>
1423
1424         Add support for aborting invocations.
1425
1426         * debugger-agent.c
1427         (InvokeData): Added `InvokeData *last_invoke'.
1428         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1429         added a new `invoke' field to keep the `InvokeData *' throughout
1430         the invocation.
1431         (ErrorCode): Added `ERR_NO_INVOCATION'.
1432         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1433         (mono_debugger_agent_handle_exception): Don't report any exception
1434         if an abort was requested.
1435         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1436         a thread abort if necessary.
1437         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1438
1439 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1440
1441         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1442         so we can release the whole list and not just the first one. Free
1443         it in more places as well.
1444
1445 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1446
1447         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1448
1449 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1450
1451         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1452
1453 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1454
1455         * driver.c: report also other misc build options.
1456
1457 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * method-to-ir.c: Generate better code for the NewObject
1460         intrinsic.
1461         
1462 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1463
1464         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1465         is disabled. Fixes #582322.
1466
1467         * iltests.il.in: Add a test.
1468
1469 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1470
1471         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1472         the handling of obj->synchronization == null and owner != current thread to
1473         mono_monitor_exit ().
1474
1475         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1476
1477
1478 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1479
1480         * mini.c: change the way emulated opcode info is stored and save about
1481         4 KB of runtime memory.
1482
1483 2010-03-04  David S. Miller  <davem@davemloft.net>
1484
1485        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1486        that don't provide the siginfo in the second signal handler argument
1487        are buggy, and this has been fixed for years.
1488        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1489        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1490
1491 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * aot-runtime.c (find_symbol): Fix a leak.
1494         (decode_patch): Ditto.
1495
1496 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1499
1500 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1503
1504 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1505
1506         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1507
1508 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1509
1510         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1511         to check for errors, it's enough to create the metadata open.
1512
1513         Fixes #562150
1514
1515 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1516
1517         * trace.c|h:
1518         * mini-exceptions.c: Add support for printing stack traces when handling
1519         exceptions, and when printing exceptions thrown while tracing also print
1520         the exception message.
1521
1522 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1523
1524         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1525         since the exclude token is a valid string character.
1526
1527 2010-03-02  Levi Bard  <levi@unity3d.com>
1528
1529         * debugger-agent.c: Invalidate thread stacks on domain unload.
1530
1531 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1532
1533         * method-to-ir.c: Emit dummy_use for stored reference after write
1534         barriers to make sure the object is pinned if the GC interrupts
1535         before the write barrier is done.
1536
1537 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1540
1541 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * debugger-agent.c: Add a log message printing the protocol version.
1544
1545 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1546
1547         * debugger-agent.c: Add a new command to communicate the protocol version used
1548         by the client. This could be used to allow newer runtimes to communicate with
1549         older clients.
1550
1551 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1554
1555 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1556
1557         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1558         type.
1559
1560 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1561
1562         * mini-arm.c: make the arm cpu arch configurable with the
1563         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1564         Bug #584198.
1565
1566 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1567
1568         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1569         support for the perf tool on Linux.
1570
1571 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1572
1573         * method-to-ir.c: make string.InsertenalSetChar() specialization
1574         effective.
1575
1576 2010-03-01  Robert Jordan  <robertj@gmx.net>
1577
1578         * Makefile.am: fix the non-static build.
1579
1580 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1581
1582         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1583         here.
1584
1585 2010-02-26  Robert Jordan  <robertj@gmx.net>
1586
1587         * tasklets.c (continuation_store): Return from an error condition
1588         immediately.
1589
1590 2010-02-26  Martin Baulig  <martin@ximian.com>
1591
1592         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1593
1594         * debug-mini.c
1595         (MonoDebuggerThreadInfo): Added `internal_flags'.
1596         (MonoDebuggerInternalThreadFlags): New enum.
1597         (_mono_debugger_throw_exception): Don't signal the debugger if a
1598         type abort was requested.
1599         (_mono_debugger_unhandled_exception): Likewise.
1600         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1601         (mono_debugger_runtime_invoke): If the debugger requested a thread
1602         abort during the invocation, reset it here.
1603
1604 2010-02-26  Martin Baulig  <martin@ximian.com>
1605
1606         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1607         instead of `MonoThread *'.
1608
1609 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1612         code offsets table, as it is mostly sorted.
1613
1614 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1617         Fixes #582991.
1618
1619 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1622
1623 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1624
1625         * Makefile.am: build the new ABI version of the libmono library.
1626         * debugger-agent.c, mini.c: fix warnings with the new API.
1627         * jit.h: don't depend on glib.h being included.
1628
1629 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1632
1633 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1636         ThreadStatic variables.
1637
1638 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1641         data is not freed yet. Fixes #582460.
1642
1643 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1646         event requests. Bump protocol minor version.
1647
1648 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1651
1652 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1655         #581950.
1656
1657         * iltests.il.in: Add a test.
1658
1659 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1660
1661         * mini.c (inline_method): Check for loader errors.
1662
1663 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1664
1665         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1666         instead of mono_method_get_header as it doesn't decode locals
1667         so the called method can have unresolved dependencies that will only
1668         be satisfied after the current method is JIT'd.
1669
1670         Fixes #550968.
1671
1672 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * basic.cs (test_0_div_opt): Speed this up a bit.
1675
1676 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1679
1680         * mini.c (mono_jit_create_remoting_trampoline): Call
1681         mono_create_specific_trampoline () instead of
1682         mono_arch_create_specific_trampoline ().
1683
1684         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1685
1686 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1689         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1690
1691         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1692
1693         * mini-amd64.c: Fix DISABLE_JIT support.
1694
1695 2010-02-20  Geoff Norton  <gnorton@novell.com>
1696
1697         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1698
1699 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1702         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1703         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1704         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1705         handle_exception.
1706
1707 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1710         edx/ecx too. This is needed to support OP_SEQ_POINT.
1711
1712 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1715
1716         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1717
1718 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1719
1720         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1721         LLVM+AOT+exceptions, not enabled yet.
1722
1723 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1724
1725         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1726
1727 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1730         xdebug info for these.
1731
1732         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1733         in a few places.
1734
1735         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1736         not used yet.
1737
1738 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1741
1742 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1745         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1746
1747         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1748         for mtouch.
1749
1750 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1751
1752         * debugger-agent.c: handle incomplete reads and EINTR in
1753         recv()/send(). This could have been causing random
1754         disconnections.
1755
1756 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1759         points.
1760
1761         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1762         so they have small offsets. Fixes #566311.
1763
1764 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1765
1766         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1767
1768 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * mini-amd64.c: Remove the special casing of byref in a few places now that
1771         mini_type_get_underlying_type () handles it.
1772
1773         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1774         by returning native int. Fixes #577984.
1775
1776 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1777
1778         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1779         a macro.
1780
1781         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1782         of putting the clause itself.
1783
1784         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1785
1786 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1789         might be unaligned.
1790
1791 2010-02-10  Geoff Norton  <gnorton@novell.com>
1792
1793         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1794
1795 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1798         llvm methods too.
1799
1800         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1801         it is not an LLVM generated symbol.
1802
1803         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1804
1805         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1806         implementation in gshared mode because it causes regressions.
1807
1808         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1809
1810         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1811         should be done by the caller.
1812
1813         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1814
1815         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1816
1817         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1818         since mono_jit_info_table_find () doesn't do it anymore.
1819
1820         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1821         instead of mono_jit_info_table_find ().
1822
1823 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1826
1827         * aot-compiler.c (encode_method_ref): Update after the removal of
1828         mono_gc_get_managed_allocator_type ().
1829
1830         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1831         Fixes #564538.
1832
1833 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1836         generic params as well.
1837         (handle_isinst): Ditto.
1838
1839         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1840         instead of always calling an icall.
1841
1842         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1843         computing the size of the got.
1844
1845         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1846         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1847         the assembly directive '.set' so it points to the first LLVM emitted method.
1848
1849 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1850
1851         * mini.c (mini_method_verify): Report the method which failed to verify.
1852
1853 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1854
1855         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1856         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1857         runtime MS verifier.
1858
1859 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1862         #561962.
1863
1864 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * mini-llvm.c: Init the jit module only when first JITting.
1867
1868         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1869
1870         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1871
1872         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1873         replaced with the real got.
1874
1875         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1876
1877         * image-writer.c: Reduce the amount of #ifdefs a bit.
1878
1879         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1880         llvm on darwin/arm.
1881
1882         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1883
1884         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1885         global.
1886
1887 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1890         (mono_llvm_emit_method): Fix unaligned stores too.
1891
1892         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1893         so async stack walks don't crash.
1894
1895 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1898         was not patched if the callee needed an rgctx trampoline.
1899
1900 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1903         vtable address in AOT code.
1904
1905 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1908         MonoInst's.
1909
1910 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1911
1912         * genmdesc.pl: remove dependency on external cpp.
1913
1914 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1917         using LLVM, its not needed, and abcrem can't handle it.
1918
1919 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1920
1921         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1922         it easier to group instructions and reduce duplication.
1923
1924 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * decompose.c: Move the array/soft float decompose routines here from
1927         method-to-ir.c.
1928
1929         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1930
1931 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1934         to tell LLVM that the got is constant, not used yet.
1935
1936         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1937
1938 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1939
1940         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1941         managed wrappers.
1942
1943 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1944
1945         * aot-compiler.c (add_wrappers): Commit the hack which generates
1946         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1947         custom attribute.
1948
1949 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1952         a fault, only used by the LLVM backend.
1953
1954         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1955         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1956
1957         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1958         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1959
1960         * mini-llvm.c: Only generate volatile loads from load instructions which have
1961         the MONO_INST_FAULT flag set.
1962
1963 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1964
1965         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1966         64 bit platforms.
1967
1968 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1971         sequence points. Fixes #571236.
1972
1973 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1976         end of the appdomain unload process, after assemblies have been unloaded.
1977         Fixes #574842.
1978
1979 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1982         works.
1983
1984         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1985         Fixes #573988.
1986
1987 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1990
1991 2010-01-26  Geoff Norton  <gnorton@novell.com>
1992
1993         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1994         with struct marshalability.
1995
1996 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1999         it supports class names as well.
2000
2001         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2002         needed by the GC map code.
2003
2004         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2005         flags if needed.
2006
2007         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2008         if cfg->init_ref_vars is set.
2009
2010         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2011         cfg->disable_initlocals_op_refs is set.
2012
2013         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2014         using liveness info if cfg->compute_precise_live_ranges is set.
2015
2016         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2017         volatile variables correctly. Add comments about the live ranges. Not enabled
2018         yet.
2019
2020 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2021
2022         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2023         0x2a into them in method prologs.
2024
2025         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2026
2027 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2028
2029         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2030         classes, since llvm is compiled with -fno-rtti.
2031
2032         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2033
2034         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2035         llvm does not require it.
2036
2037         * aot-runtime.c (load_method): Print the full name of the last aot method.
2038
2039 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2042         thread has not fully started yet.
2043
2044 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2047
2048 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2049
2050         * driver.c: Do not abort if LLVM is not supported, print a
2051         warning and add the information to the Mono JIT information.
2052
2053 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2056         using explicit null checks.
2057
2058 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2061         related code.
2062
2063         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2064         () in one place.
2065         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2066         its no longer needed.
2067
2068         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2069
2070         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2071         define for platforms still using it (s390). Get rid of the
2072         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2073
2074         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2075         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2076
2077         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2078         the caller pushed the arguments.
2079
2080         * mini-llvm.c: Enable throwing exceptions on x86.
2081
2082         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2083         "Thread (nil) may have been prematurely finalized" messages if this is called
2084         on a thread not registered with the runtime.
2085
2086         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2087
2088 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * jit-icalls.c (mono_array_new_3): New jit icall.
2091
2092         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2093
2094         * arrays.cs: Add a test for 3 dimensional arrays.
2095
2096 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2097
2098         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2099         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2100         used.
2101
2102         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2103         thrown on x86.
2104
2105         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2106
2107         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2108
2109         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2110
2111 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2112
2113         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2114           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2115
2116         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2117
2118         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2119
2120         Code is contributed under MIT/X11 license.
2121
2122 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2125
2126         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2127
2128         * mini.c (mini_method_compile): Set the new flag when running under the
2129         debugger.
2130
2131 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2134         a ref/noref value + a global pin flag, so parts of stack frames can still be
2135         precisely marked even if they include stuff which needs pinning. Improve logging.
2136         Fix many bugs. Not enabled yet.
2137
2138         * gc-test.cs: Add a few tests.
2139
2140         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2141         the normal -v options. Avoid propagating liveness information through bblocks
2142         which end with a NOT_REACHED opcode.
2143
2144         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2145         after cfg has been freed.
2146
2147 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2150         if a clause is skipped because it uses the exception object, since it could
2151         have caught the exception.
2152
2153         * exceptions.cs: Add a test.
2154
2155 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2156
2157        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2158
2159         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2160         ICollection<T> wrappers.
2161
2162 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2165
2166 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2167
2168         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2169         NOMAP32BIT or optimize_for_xen is set.
2170
2171 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2172
2173         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2174         mono_metadata_str_hash () instead.
2175
2176 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2179         sizeof (void*).
2180
2181         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2182
2183 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2186         flag is set.
2187
2188         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2189         throwing code correctly.
2190
2191         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2192
2193 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2196         ftnptrs created by us, handle RGCTX_FETCH correctly.
2197         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2198
2199         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2200         ftnptr added by mono_aot_get_named_code ().
2201
2202 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * mini-arm.c: Fix a few LLVM problems.
2205
2206         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2207
2208 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2209
2210         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2211         AOT compiling.
2212
2213 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2214
2215         * jit.h, method-to-ir.c: added ability to set the policy for
2216         inserting breakpoints from the break IL instruction or the
2217         Debugger.Break () API call.
2218
2219 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2222         assemblies need to be eagerly loaded.
2223
2224 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2227
2228 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2231         an argument which matches any exception.
2232
2233 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2236         optimization if the called method is gshared and marshalbyref, since gshared
2237         methods can' have wrappers. Fixes #569390.
2238
2239         * generics.cs: Add a test.
2240
2241 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2244         callable from gdb.
2245
2246 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2249
2250 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2253         since it is not supported in win2000.
2254
2255 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2258         error if loading an assembly fails.
2259         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2260
2261         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2262         if exists.
2263
2264         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2265         compiled methods.
2266
2267         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2268
2269         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2270         is not supported yet.
2271
2272         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2273
2274 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2275
2276         * method-to-ir.c: All types with variant arguments must fallback to the
2277         slow path. This makes cast of variant delegates work.
2278
2279         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2280         argument that is set to TRUE is the returned vtable slot is for a variant
2281         interface. Changed a g_print + g_assert_not_reached to a g_error.
2282
2283         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2284         a similar fashion of generic virtual methods.
2285
2286 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2287
2288         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2289         when cfg is null.
2290
2291         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2292         method using a variance aware function.
2293
2294         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2295
2296 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2297
2298         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2299         do an icall for now.
2300
2301 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2304         If LLVM decides to set the code model to Large, reset it to Default.
2305
2306 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2309         stripped binaries as well.
2310
2311 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2314         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2315
2316         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2317         reg.
2318
2319 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2322         separate function.
2323
2324         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2325         as the type info to llvm.eh.selector.
2326         (exception_cb): Use the type info for filling out some fields of
2327         MonoJitExceptionInfo like the flags and the exception class. This is needed
2328         because the LLVM produced exception handling clauses might not match the original
2329         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2330
2331         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2332         separate function. Add an extra argument which returns the type infos
2333         corresponding to the exception clauses.
2334
2335         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2336         exception handling clauses.
2337
2338 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2341         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2342         to fix an AOT case.
2343
2344 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2345
2346         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2347         internal assembly.
2348
2349 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2352         llvm code.
2353
2354 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2355
2356         * mini.c (mini_method_compile): Verify the method before calling
2357         mono_compile_create_vars as this might crash since it uses method
2358         information.
2359
2360         Fixes #560196.
2361
2362 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2365         one case if AOTing, since the class might not be a concrete class.
2366
2367 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2370         functions which are now defined in mempool-internals.h.
2371
2372         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2373
2374         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2375
2376 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2377
2378         * mini.c:
2379         * method-to.ir.c:
2380         * mini-*.c: Properly handle generic enums.
2381
2382         Fixes #566294
2383
2384 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2387         in a few more places.
2388
2389 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2392         nullable parameters. Fixes #567351.
2393
2394 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2395
2396         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2397
2398 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2401         mono_get_generic_context_from_code () call.
2402
2403         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2404
2405 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2406
2407         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2408         needed.
2409
2410 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2411
2412         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2413         mono_method_get_signature returns NULL. Fix #567084
2414
2415 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2418         instead of once for each module.
2419
2420 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * debugger-agent.c (ss_start): Implement step over for the last sequence
2423         point in methods.
2424
2425         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2426         have the STEP_LOC flag set.
2427
2428         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2429         fails. Fixes #566689.
2430
2431 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * mini.c (mono_add_seq_point): New helper function.
2434         (mono_save_seq_point_info): New function to save sequence point info, extracted
2435         from mini_method_compile ().
2436
2437         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2438
2439         * mini.h (MonoSeqPointInfo): New structure containing information about
2440         the sequence points of a JITted method.
2441         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2442         'bucket' field.
2443
2444         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2445         point information is stored, use a MonoSeqPointInfo structure instead of a
2446         GPtrArray. For each seq point, compute a list of successor seq points.
2447
2448         * debugger-agent.c: Use the successor list to implement step-over more
2449         efficiently: instead of single stepping until a different line/IL offset is
2450         reached, place breakpoints into all successor seq points.
2451
2452         * mini.h: Bump AOT file format version.
2453
2454 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2455
2456         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2457
2458         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2459
2460 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2463         build.
2464
2465 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2468         alloca as g_malloc is not signal safe.
2469
2470 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2473         VALGRIND_DISCARD_TRANSLATIONS.
2474
2475         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2476         checks, they are no longer needed.
2477
2478         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2479         a function into a sigctx which can handle function pointers.
2480
2481         * mini-ppc.c: Implement soft debugger support on ppc64.
2482
2483         * mini-ppc.c: Implement soft debugger support.
2484
2485 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2488
2489 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2490
2491         * mini.c (mono_get_runtime_build_info): include Mono version in
2492         the returned value.
2493
2494         * driver.c (mono_main): VERSION is now included in the string
2495         returned from mono_get_runtime_build_info()
2496
2497 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2500         signatures. Fixes #565143.
2501
2502         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2503
2504 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2507
2508 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2511         making max stack 10x smaller.
2512
2513 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2516
2517 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2518
2519         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2520
2521 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2522
2523         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2524         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2525
2526         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2527
2528         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2529
2530         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2531
2532         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2533         the compilation.
2534
2535 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2536
2537         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2538         raise an invalid program exception.   
2539
2540         For other opcodes that we might not handle use a g_warning and
2541         raise the exception.   Beats termination.
2542
2543         Fixes #561724
2544
2545 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2548
2549         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2550         by merging the LLVM and !MAP_32BIT cases.
2551
2552 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2553
2554         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2555         sigctx being passed in, as we have no CONTEXT available in the APC.
2556
2557         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2558         for now.
2559
2560         Code contributed under MIT/X11 license.
2561
2562 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2563
2564         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2565         in the LLVM backend on AMD64.
2566
2567         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2568         FDE.
2569
2570         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2571
2572         * mini-llvm.c: Export mono_personality for AOT.
2573
2574         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2575
2576         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2577         implicit exception can occur.
2578
2579         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2580         OP_IMPLICIT_EXCEPTION instruction.
2581
2582         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2583
2584         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2585
2586         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2587         inside a protected block.
2588
2589         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2590         trampolines doesn't include the argument.
2591
2592         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2593         trampolines on amd64.
2594
2595         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2596         of RDI.
2597
2598         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2599         disabled for methods with clauses.
2600
2601         * mini-llvm.c: Enable support for catch clauses.
2602
2603         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2604         end of an LLVM compiled finally clause.
2605         (mono_handle_exception_internal): Save the exception handling state in TLS
2606         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2607         resume unwinding from that point.
2608
2609         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2610         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2611         to obtain the addresses of the exception handling regions.
2612
2613         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2614         finally clauses are supported.
2615
2616         * mini.c (mini_method_compile): Add support for LLVM code with exception
2617         handlers.
2618
2619 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2622         proper size.
2623
2624 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2625
2626         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2627         as a primitive type.
2628
2629 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2630
2631         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2632         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2633         #564000.
2634
2635 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2636
2637         * method-to-ir.c (mini_redirect_call): do not redirect the
2638         InternalAllocateStr internal call if string profiling is enabled.
2639
2640 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2643         generic methods.
2644
2645         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2646         unwind.h header file.
2647
2648         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2649         newer valgrind versions seems to handle this fine.
2650
2651 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2654         on the debugger thread.
2655
2656 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2659
2660         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2661
2662         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2663
2664         * cpu-<ARCH>.md: Make call_handler clob:c.
2665
2666         * mini.c: Reenable SSA for methods with clauses.
2667
2668         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2669         as it causes failures on x86.
2670
2671 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2672
2673         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2674         returns NULL (e.g. a bad assembly).
2675
2676 2009-12-08  Geoff Norton  <gnorton@novell.com>
2677
2678         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2679         stepping out into native code.  There were issues with nested invokes
2680         like .cctors.
2681
2682 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2683
2684         * mini.c (mini_method_compile): Do the disable_llvm checks early
2685         and avoid the LLVM compile pass if the checks fail.
2686
2687         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2688
2689         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2690         LLVM optimizations don't try to remove them.
2691
2692         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2693         different file so the original remains.
2694
2695 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2698
2699         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2700
2701         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2702         support for non-inline unwind descriptors.
2703
2704 2009-12-07  Geoff Norton  <gnorton@novell.com>
2705
2706         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2707         the interrupt_count slightly differently.  Native threads were never
2708         marked as resumed.
2709
2710 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2713         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2714         yet generate this info.
2715
2716         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2717
2718         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2719         client can distinguish between intptrs and longs.
2720
2721 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2724         blob.
2725
2726         * aot-runtime.c (load_function): Update after the change above.
2727
2728         * mini.h: Bump AOT file format version.
2729
2730         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2731         if the delegate class is dynamic.
2732
2733         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2734         in gshared code too using the new rgctx info type
2735         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2736
2737 2009-12-04  Geoff Norton  <gnorton@novell.com>
2738
2739         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2740         we need to track the original suspend count so the thread properly
2741         wakes up in resume_thread.
2742
2743 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2746         code.
2747
2748         * generics.cs: Add a test.
2749
2750         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2751         is 0. Simplify a lot of code using this.
2752
2753         * mini-trampolines.c (mono_delegate_trampoline): Call
2754         mono_create_static_rgctx_trampoline () before saving the final address in
2755         delegate->method_code, to avoid calling it each time a delegate is first called.
2756
2757         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2758         which need static rgctx trampolines.
2759
2760         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2761         keyed on the method+addr pair, since addr could be either the method addr or
2762         an unbox trampoline in the AOT case. Fixes #560246.
2763
2764 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2767         place it was called before too.
2768
2769 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2772         if no security manager is present, to speed up the AOT case. Call
2773         mono_class_vtable () full with raise_on_error == TRUE instead.
2774
2775 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2776
2777         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2778         the local optimization passes can take its result into account. Fixes
2779         #559876.
2780
2781         * exceptions.cs: Add a test.
2782
2783 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2784
2785         This patch is contributed under the terms of the MIT/X11 license
2786
2787         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2788
2789 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2792
2793         * debugger-agent.c: Rework the handling of stack traces of running threads to
2794         avoid crashes if compute_frames () tries to walk the stack of running thread.
2795
2796         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2797
2798         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2799
2800         * mini.h (StackFrameInfo): Add an 'lmf' field.
2801
2802 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * debugger-agent.c (suspend_current): Always set really_suspended.
2805
2806         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2807
2808         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2809
2810 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2813         really suspended.
2814
2815 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2818
2819 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2820
2821         * mini-trampolines.c: Fix MSVC build.
2822
2823 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2826
2827 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2830         the instruction following an OP_FCOMPARE is optimized away.
2831
2832 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2833
2834         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2835         emit_autoreg () into this arch-specific function.
2836
2837         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2838         code, it is no longer needed.
2839
2840         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2841
2842         * mini.h: Bump AOT file format version.
2843
2844         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2845         using the sorted_code_offsets array, instead of reading it from the
2846         exception debug info.
2847         (load_method): Call mono_aot_find_jit_info instead of
2848         decode_exception_debug_info ().
2849
2850         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2851         LLVM compiled as a flag.
2852
2853 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2854
2855         * debugger-agent.c (resume_thread): Fix a warning.
2856
2857         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2858         generated.
2859
2860 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2863         contents to MonoAotFileInfo.
2864
2865 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2868         Put all binary data into a giant blob, similarly to the way .net assemblies
2869         store binary data. Emit offset tables in a compact form to reduce their size.
2870
2871         * mini.h: Bump AOT file format version.
2872
2873         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2874         places.
2875
2876         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2877         avoid linear searches at runtime.
2878
2879         * aot-runtime.c (find_symbol): Update this to use the hash.
2880
2881         * mini.h: Bump AOT file format version.
2882
2883 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2886         container.
2887
2888         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2889         too.
2890
2891         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2892         the distribution of got slot types.
2893
2894         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2895
2896         * method-to-ir.c: Add support for generating explicit null checks.
2897
2898 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2901         on a random thread if possible.
2902
2903         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2904         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2905         correctly.
2906
2907         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2908         regs. Pass the real size of the regs array to mono_unwind_frame ().
2909
2910         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2911         ones instead.
2912
2913 2009-11-24  Geoff Norton  <gnorton@novell.com>
2914
2915         * mini-darwin.c: Work around apple bug rdar://7209349  See
2916         http://openradar.appspot.com/7209349 for details.  Synopsis,
2917         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2918         never been initialized before.
2919
2920 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2923
2924         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2925
2926 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2929         OP_SHL_IMM is not 32 bit.
2930
2931 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2934
2935 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2938         encountered.
2939
2940         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2941         > 0 since some threads can resume if their resume_count is > 0.
2942         (invoke_method): Avoid reading freed memory.
2943
2944         * debugger-agent.c (process_suspend): Extract the suspend code from
2945         process_single_step_inner () to a separate function. Rework the code to prevent
2946         races between this function and thread interrupts.
2947
2948         * debugger-agent.c (suspend_current): Check the resume_count field instead
2949         of resume_one so suspends+resumes during single threaded invokes work
2950         correctly.
2951
2952 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2953
2954         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2955         to make the generated code smaller.
2956
2957         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2958         sequence generated by recent LLVM versions.
2959
2960         * mini-llvm.c: Add support for a few simple cases which weren't supported
2961         before.
2962
2963         * mini-trampolines.c (mono_magic_trampoline): Don't call
2964         mono_arch_get_vcall_slot () when llvm is enabled.
2965
2966         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2967
2968         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2969         into a new function called common_call_trampoline () which is used by the
2970         llvm vcall trampoline as well.
2971
2972         * debugger-agent.c: Implement single threaded invokes.
2973
2974         * debugger-agent.c: Revert change which broke the agent on linux.
2975
2976         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2977         #557606.
2978
2979         * generics.cs: Add a test.
2980
2981 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * debugger-agent.c: Fix the cygwin build.
2984
2985 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * cprop.c: Remove this unused file.
2988
2989 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2992         #557262.
2993
2994         * basic.cs: Add a test.
2995
2996 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2999         in one more place.
3000
3001 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3004         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3005         it. Use this flag to control llvm related code paths instead of #ifdef
3006         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3007         AOT code.
3008
3009         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3010
3011         * mini.h: Bump AOT file format version.
3012
3013         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3014         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3015
3016         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3017         was used as an assembly filter.
3018
3019 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * unwind.c: Fix support for ppc.
3022
3023         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3024         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3025
3026 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3029         port.
3030         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3031         added by the ps3 changes.
3032
3033 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * mini-gc.c: Resurrect this, so at least it compiles.
3036
3037         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3038
3039 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3042         create_event_list () so assembly filters can be used.
3043
3044         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3045         from the LMF.
3046
3047 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3050         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3051         is disabled.
3052
3053         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3054         classes for char/bool too.
3055
3056         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3057
3058         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3059         used.
3060
3061         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3062         Fix warnings.
3063
3064 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3065
3066         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3067         
3068         Code contributed under MIT/X11 license.
3069
3070 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3071
3072         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3073         threads in native code work.
3074
3075         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3076         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3077         version.
3078
3079 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3080
3081         * debugger-agent.c: Implementation for Windows platform.
3082
3083         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3084         primitives. Use SEH to implement breakpoints and single stepping.
3085
3086         * mini-x86.h: Enable soft debugger on Windows.
3087
3088         Code contributed under MIT/X11 license.
3089
3090 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3091
3092         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3093         under XEN. Fixes #522894.
3094
3095         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3096
3097         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3098         interface calls in LLVM AOT code.
3099
3100         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3101         is found.
3102
3103         * mini-llvm.c: Add support for OP_VPHI.
3104
3105         * objects.cs: Add a test.
3106
3107 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3110         this is called on the debugger thread.
3111
3112 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * mini-llvm.c: Add soft-float support.
3115
3116         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3117         FCALL which returns an R4.
3118
3119         * driver.c (mono_main): Add a missing '\n'.
3120
3121         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3122         platforms which doesn't support the LLVM IMT trampoline.
3123
3124 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3127
3128         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3129
3130         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3131         virtual calls.
3132
3133         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3134
3135 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3138         Instead of emitting a method_order table, sort the contents of the code_offsets
3139         table and do a binary search in the sorted table. The previous approach doesn't
3140         work with LLVM which emits methods in a arbitrary order.
3141
3142         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3143         in the .eh_frame section in ELF files.
3144
3145         * mini.h: Bump corlib file format version.
3146
3147         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3148
3149         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3150         LDMIA->LDM macro name change.
3151
3152 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3153
3154         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3155         x86.
3156
3157         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3158         SVN.
3159
3160         * aot-compiler.c: Ditto.
3161
3162         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3163         &align to mini_type_stack_size_full ().
3164
3165         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3166
3167         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3168
3169 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * mini-arm.c: Compute the stack space used by arguments using
3172         mini_type_stack_size_full ().
3173
3174 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * optflags-def.h: Remove dead TREEPROP optimization.
3177
3178 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3181
3182         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3183
3184 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * driver.c (mono_jit_parse_options): New public API function to parse options
3187         as done by the runtime executable.
3188
3189         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3190         when handling named arguments.
3191
3192 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3195         for passing small vtypes in registers, make the CallInfo structures more
3196         similar to the code on the other platforms.
3197
3198         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3199         the code in the prolog requires it.
3200
3201 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3202
3203         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3204         (koush@koushikdutta.com).
3205
3206         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3207         where the thunk memory should be allocated from. Fixes appdomain unloading
3208         on arm.
3209
3210 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3211
3212         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3213         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3214
3215 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3218         AOT, as it is not implemented yet.
3219
3220         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3221
3222 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3223
3224         * debugger-agent.c: Fix windows build.
3225
3226 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3229         after the client connects/disconnects.
3230
3231         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3232         when an exception of a given type is thrown.
3233
3234         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3235         only on an uncaught exception.
3236
3237         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3238
3239         * debugger-agent.c: Add a 'launch' option.
3240
3241 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3242
3243         * debugger-agent.c: Add a 'timeout' option.
3244
3245 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3246
3247         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3248         the JDWP agent.
3249
3250 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * debugger-agent.c (set_breakpoint): Emit a log message.
3253
3254 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * mini-arm.c: Fix the arm build.
3257
3258 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3259
3260         * aot-compiler.c: don't leak the value returned from
3261         mono_type_full_name().
3262
3263 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3264
3265         * debugger-agent.c: defer including mono-mutex.h until we know the
3266         agent is supported.
3267
3268 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3269
3270         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3271         of pthreads directly.
3272
3273         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3274         exception handlers. Pass info argument.
3275
3276         * mini.h: Adjust signatures of soft debugger functions to pass void*
3277         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3278
3279         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3280         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3281         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3282         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3283
3284         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3285
3286         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3287         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3288         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3289         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3290
3291         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3292
3293         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3294
3295         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3296
3297         * mono-semaphore.h: Skeleton implementation for Windows.
3298
3299         Code contributed under MIT/X11 license.
3300
3301 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3302
3303         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3304
3305         Code contributed under MIT/X11 license.
3306
3307 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3308
3309         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3310
3311         Code contributed under MIT/X11 license.
3312
3313 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3316         debug info to 100 because 10 still slows down gdb too much.
3317
3318         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3319         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3320         them in the wrappers.
3321
3322 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3323
3324         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3325
3326         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3327
3328         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3329         function mono_aot_get_array_helper_from_wrapper ().
3330
3331         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3332         array helper methods.
3333
3334 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3335
3336         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3337         the value was loaded from memory.
3338
3339         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3340         the value was loader from there.
3341
3342         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3343         without constant swizzle.
3344
3345 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3346
3347         * mini-amd64.c: Put soft debugger functions behind a
3348         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3349
3350         * mini-amd64.h: disable the soft debugger in windows.
3351
3352         Code contributed under MIT/X11 license.
3353
3354 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3355
3356         * mini-x86.c: Put soft debugger functions behind a
3357         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3358
3359         Code contributed under MIT/X11 license.
3360
3361 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3362
3363         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3364         to mono_arch_find_jit_info_ext.
3365
3366         Code contributed under MIT/X11 license.
3367
3368 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3371
3372         * debugger-agent.c: Add support for filtering events by assemblies.
3373
3374         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3375         the agent is not enabled.
3376
3377 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3378
3379         * exceptions-x86.c: hopefully last change to fix the windows build.
3380         This one courtesy of Jonathan Chambers.
3381
3382 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3383
3384         * debugger-agent.c: remove unused function.
3385
3386 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3387
3388         * debugger-agent.c: add #ifdefs for a few header files.
3389         * mini-x86.h: disable the soft debugger in windows.
3390         Step 1 of 2 to make this compile on windows with gcc.
3391
3392 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3395         as it breaks the build.
3396
3397 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3398
3399         Merge the soft debugger branch.
3400
3401         * debugger-agent.h debugger-agent.c: New files containing the soft
3402         mode debugger module.
3403
3404         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3405         at the appropriate locations.
3406
3407         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3408         opcode.
3409
3410         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3411         enable/disable single stepping.
3412
3413         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3414         which returns all information in a StackFrameInfo structure, and can handle the
3415         LMF frames added by the debugger.
3416
3417         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3418         about an LMF frame.
3419
3420         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3421         walker function which works on a specific thread and passes a StackFrameInfo
3422         structure to its callback.
3423
3424         * mini.c (mini_init): Initialize the debugger agent.
3425
3426         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3427
3428         * mini-ops.h: Add OP_SEQ_POINT opcode.
3429
3430         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3431         arguments to the debugger agent.
3432
3433 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3434
3435         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3436         speed things up.
3437
3438         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3439
3440         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3441
3442         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3443
3444         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3445         if needed.
3446         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3447         sets the IMT argument and makes a virtual call.
3448
3449         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3450
3451 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3454         the windows build.
3455
3456 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3459         runtime. Fixes #551228.
3460
3461 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3464
3465         * basic.cs: Add a test.
3466
3467         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3468         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3469         CONSTRAINED. Fixes #550964.
3470
3471         * generics.cs: Add a test.
3472
3473 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3474
3475         * mini-posix.c (add_signal_handler): Use
3476         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3477
3478 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3479
3480         Contributed under the terms of the MIT/X11 license by
3481         Jerry Maine <crashfourit@gail.com>.
3482
3483         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3484         sse4a for simd intrinsics.
3485
3486         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3487         sse4a for simd intrinsics.
3488
3489 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3492         instead of inst_p1 which is not the same on ILP32 platforms.
3493
3494 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3495
3496         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3497         not the mscorlib one before calling mono_get_lmf_addr.
3498
3499         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3500         of the ip to the LMF.
3501
3502         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3503         immediate in the op->op_imm optimization.
3504
3505         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3506         understand. VTypes now work, but are not abi compliant, as they are
3507         split into 4 byte parts instead of 8.
3508         (emit_memcpy): Fix the unrolled case to work on the PS3.
3509
3510         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3511
3512         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3513         the default when static linking.
3514
3515         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3516
3517         * aot-compiler.c: Add an autoreg option to automatically register
3518         statically linked aot modules using ELF .ctors.
3519
3520         * genmdesc.pl: Add __ppc64__ to allowed defines.
3521
3522 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3525         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3526
3527 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3528
3529         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3530
3531 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3532
3533         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3534         which will contain the domain where the method was found.
3535
3536         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3537         mini_jit_info_table_find ().
3538
3539         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3540
3541         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3542
3543 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3546         set, its not supported yet.
3547
3548 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3551         iface wrapper is not found.
3552         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3553
3554 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3555
3556         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3557         which have a different name.
3558
3559         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3560         wrappers and Array.GetGenericValueImpl ().
3561
3562         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3563         because of the change above.
3564
3565         * generics.cs: Add a test for full aot + generic array ifaces.
3566
3567 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3568
3569         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3570         that hides the previous one.
3571
3572 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3575         marshalled. Fixes #541623.
3576
3577 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3580
3581 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3584
3585 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3586
3587         * mini-posix.c (sigprof_signal_handler):
3588         Implemented support for building stat call chans in different ways.
3589
3590 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3591
3592         * mini-exceptions.c (mono_find_jit_info):
3593         Also check that a jit info has been found (fixes a profiler crash).
3594
3595 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3596
3597         * mini.c (mono_codegen):
3598         Call mono_profiler_code_buffer_new with correct code address.
3599
3600 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * driver.c (mono_main): Change the date in the copyright.
3603
3604 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3605
3606         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3607         allocator in shared generic code for open classes, because we
3608         can't get those classes' vtables.  We need to make managed
3609         allocators not depend on the vtable at compile-time to solve this.
3610
3611 2009-10-13  Martin Baulig  <martin@ximian.com>
3612
3613         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3614         `const guint8 *trampoline' argument; send both the old and the new
3615         notification.
3616
3617 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3620         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3621         (can_marshal_struct): Skip structures with auto layout.
3622
3623         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3624
3625 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3628         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3629         a variable to hold the stack slot used by the int<->float conversion opcodes.
3630
3631         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3632
3633 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3636         when using full-aot.
3637
3638 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3639
3640         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3641         each instance of Comparer<T>.
3642
3643         * generics.cs: Add a new test.
3644
3645 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * driver.c (parse_debug_options): Add a 'gdb' option.
3648
3649         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3650
3651         * image-writer.c: Add support for emitting the image into a memory buffer.
3652
3653         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3654
3655         * aot-compiler.c: Add support for registering debug info with GDB using the
3656         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3657         MONO_XDEBUG to 'gdb'.
3658
3659 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3660
3661         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3662         gdb mode.
3663
3664 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3667         can be used to set breakpoints in gdb.
3668
3669         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3670         segment to an absolute address.
3671
3672 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3673
3674         * method-to-ir.c: Use the managed array allocator method if
3675         available.
3676
3677 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3678
3679         * aot-compiler.c : Fix the MSVC builds
3680
3681         Code is contributed under MIT/X11 license.
3682
3683 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3684
3685         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3686         avoid registering 1 symbol file per method with gdb.
3687
3688 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * mini-sparc.c: Fix the handling of enums with base type long.
3691
3692         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3693
3694         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3695         instead of using type->data.klass as the later doesn't work with generics.
3696
3697 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3698
3699         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3700         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3701         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3702         works differently now and we don't handle it in the JIT anymore.
3703
3704         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3705         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3706         the Thread class split.
3707
3708 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * driver.c: Don't run tests with the obsolete treeprop optimization.
3711
3712         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3713         variable volatile. Fixes #541577.
3714
3715         * basic-calls.cs: Add a new test.
3716
3717         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3718
3719 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3722         work/required with recent iphone sdk versions.
3723
3724         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3725         structures.
3726
3727         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3728         in the VCALL decomposition code.
3729
3730 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3733
3734         * basic.cs: Add a test.
3735
3736         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3737         generic invokes.
3738
3739         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3740         searches all the domains of the current thread.
3741
3742         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3743
3744 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3745
3746         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3747         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3748
3749         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3750         for non-jit trampolines.
3751
3752         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3753
3754         * aot-compiler.c (add_wrappers): Ditto.
3755
3756         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3757         the size of the param area used by dyn_call to 6 which covers the majority of
3758         methods.
3759
3760         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3761
3762         * mini-arm.c: Implement support for passing/receiving
3763         longs and receiving floats in the dyn_call code.
3764
3765         * mini-amd64.c: Implement support for receiving vtypes in registers in
3766         the dyn_call code.
3767
3768         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3769         the dyn_call code.
3770
3771 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * mini-arm.c (get_call_info): Return more precise information in
3774         ArgInfo->regtype.
3775         (dyn_call_supported): Use the information in CallInfo.
3776
3777         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3778
3779         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3780         code.
3781
3782         * mini-arm.c: Update after the dyn_call api changes.
3783
3784         * mini.c (mini_create_jit_domain_info): Register a destructor function
3785         for the runtime_invoke_hash.
3786
3787         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3788         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3789         this function.
3790         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3791         (dyn_call_supported): Simplify this by using get_call_info ().
3792         (mono_arch_dyn_call_free): New destructor function.
3793
3794         * generics.cs: Remove a printf.
3795
3796         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3797
3798         * mini-arm.c: Add support for enum return values and passing a few arguments
3799         on the stack.
3800         
3801         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3802         dyn invoke.
3803
3804         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3805
3806         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3807         the dynamic invoke wrappers.
3808
3809         * mini-arm.c: Implement OP_DYN_CALL for arm.
3810
3811         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3812         supported by the dynamic runtime invoke wrapper.
3813
3814         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3815         runtime invoke wrapper.
3816
3817         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3818         if possible when running with full-aot.
3819
3820         * mini-ops.h: Add OP_DYN_CALL opcode.
3821
3822         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3823         with dynamic arguments lists similar to libffi.
3824
3825 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3828         
3829         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3830         to NEWARR.
3831
3832         * iltests.il.in: Add a new test.
3833         
3834 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3835
3836         * aot-compiler.c (add_generic_instances): Add more instances of
3837         GenericEqualityComparer.
3838
3839 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3840
3841         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3842
3843 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3844
3845         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3846         comments on some functions that now can fail.
3847
3848 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3849
3850         * Makefile.am: Add Info.plist to EXTRA_DIST
3851
3852 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3855         static synchronized wrappers. Fixes #539500.
3856
3857 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3858
3859         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3860         properly.
3861
3862 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3865         lmf before calling filter clauses as well. Fixes #539550.
3866
3867         * exceptions.cs: Add a test.
3868         
3869 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * aot-compiler.c (add_generic_class): Add instances of
3872         Array.GetGenericValueImpl as well.
3873
3874         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3875         can be tested too.
3876
3877         * generics.cs: Add a fullaot linq test.
3878
3879 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3882         reg r1 on arm.
3883
3884 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3885
3886         * mini-trampolines.c (mono_delegate_trampoline) : Call
3887           mono_cominterop_get_invoke if the delegate target object
3888           is a COM object.
3889
3890         Code is contributed under MIT/X11 license.
3891
3892 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3893
3894         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3895         internal call is defined outside platform code. Reduce code 
3896         duplication with existing [Method|Field]AccessException
3897
3898 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3899
3900         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3901         if the return value is a small struct passed on regs.
3902
3903 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3906
3907         * mini-codegen.c: Enable the cpu description validation for arm.
3908
3909 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3910
3911         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3912         test which depends on structs to objects.cs.
3913         
3914         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3915         require object model related stuff working.
3916
3917         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3918
3919         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3920
3921         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3922         against the instruction metadata in mini-ops.h. amd64 only for now.
3923
3924         * mini-ops.h: Fix some instruction descriptions.
3925
3926         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3927         unused instructions.
3928
3929 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3930
3931         * exceptions.cs: Add a new test.
3932
3933 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3934
3935         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3936
3937 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3940         skip empty phi opcodes.
3941         
3942         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3943         correctly by zero extending after loads. Skip methods containing calls
3944         to the monitor enter/exit trampolines.
3945
3946         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3947         when calling mono_thread_force_interruption_checkpoint ().
3948
3949         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3950
3951         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3952         64 bit thunks.
3953         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3954
3955         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3956         bootstrap could run.
3957
3958 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3959
3960         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3961
3962 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3965         of the method to
3966         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3967         LLVM might be very short.
3968
3969         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3970         in OP_THROW/RETHROW.
3971
3972         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3973         alignment on osx.
3974
3975 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3978         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3979         LLVM might be very short.
3980
3981 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3984         the alignment for the value of sp.
3985
3986 2009-09-01  Geoff Norton  <gnorton@novell.com>
3987
3988         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3989         managed wrappers in full aot.
3990
3991 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3994
3995 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3998
3999 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4002
4003         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4004         saved info.
4005
4006         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4007
4008         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4009         depend on the info MonoMethodHeader which could be missing in IL stripped
4010         assemblies.
4011
4012 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4015         they are only 4 byte aligned.
4016
4017 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4020         was done previously, since using SP causes too many problems.
4021
4022         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4023         frames without a frame pointer works.
4024
4025         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4026         global register in methods with calls, since the calls can go through
4027         a static rgctx trampoline which doesn't save it.
4028
4029 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4030
4031         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4032
4033 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4036
4037 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4038
4039         * method-to-ir.c: Fix warnings for uninitialized variables.
4040
4041 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4042
4043         * mini-exceptions.c:
4044         * aot-compiler.c: Fix printf warnings.
4045
4046 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4047
4048         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4049         Add GetGenericValueImpl<string>.
4050         
4051         * aot-compiler.c (add_generic_instances): Add instances of
4052         GenericEqualityComparer<T> for primitive types. Only emit the array
4053         wrappers into the mscorlib image.
4054
4055 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4056
4057         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4058         the methods_loaded array using amodule->info->nmethods.
4059
4060         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4061         (MONO_AOT_FILE_VERSION): Bump this.
4062
4063         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4064         to work.
4065
4066         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4067         MonoJitInfo doesn't belong to its methods aot image.
4068
4069 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4072
4073         * mini-arm.c: Fix warnings.
4074         
4075         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4076
4077         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4078         supports it.
4079
4080 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4083         avoid clobbering IP.
4084
4085         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4086         hold the trampoline argument, so its initial value is available during
4087         debugging.
4088
4089 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4090
4091         * exceptions-arm.c:
4092         * exceptions-hppa.c:
4093         * mini.c:
4094         * exceptions-s390x.c:
4095         * exceptions-mips.c:
4096         * exceptions-ppc.c:
4097         * exceptions-sparc.c:
4098         * exceptions-alpha.c:
4099         * aot-runtime.c:
4100         * mini-trampolines.c:
4101         * exceptions-x86.c:
4102         * exceptions-s390.c: add and use #define's instead of sizeof()
4103         for MonoJitInfo and MonoJitInfoTable.
4104
4105 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4106
4107         * tramp-arm.c:
4108         * tramp-amd64.c:
4109         * tramp-ppc.c:
4110         * tramp-x86.c: use a #define instead of sizeof() for a few
4111         structures that use a zero-length array.
4112
4113 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4114
4115         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4116         case when the method is dynamic. Fixes #529238.
4117
4118 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4119
4120         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4121         of asserting when a method is JIT compiled in full-aot mode.
4122
4123 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4124         
4125         Contributed under the terms of the MIT/X11 license by
4126         Jerry Maine <crashfourit@gail.com>.
4127         
4128         * fixed wrong dates in changelog.
4129
4130 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4131         
4132         Contributed under the terms of the MIT/X11 license by
4133         Jerry Maine <crashfourit@gail.com>.
4134
4135         * basic-simd.cs: added test for packed double square root.
4136         * cpu-amd64.md: added opcode info for packed double square root.
4137         * cpu-x86.md: added opcode info for packed double square root.
4138         * mini-ops.h: added IR opcode for packed double square root.
4139         * mini-x86.c: added IR to native translation code for packed double square root.
4140         * mini-amd64.c: removed todo for packed double square root.
4141         * simd-intrinsics.c: added method to IR opcode converstion for
4142         packed double square root.
4143
4144 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4145
4146         Contributed under the terms of the MIT/X11 license by
4147         Jerry Maine <crashfourit@gail.com>.
4148
4149         * mini-amd64.c: Added a change to help tell the difference as 
4150         to what perpose the xmm register is being used--mainly to help
4151         with debuging.
4152         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4153         (one used for special cases) xmm registers for both fp
4154         and simd ops. Added define to turn on new feature in the regalloc
4155         that allows fp and simd ops to share the xmm regs happily.
4156         * codegen.c: Added code to detect for which perpose an xmm reg is
4157         being used (fp or simd) and to translate back and forth to the
4158         correct logical reg bank (fp or simd) for 'spill load's.
4159
4160 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4161
4162         Contributed under the terms of the MIT/X11 license by
4163         Jerry Maine <crashfourit@gail.com>.
4164
4165         * basic-simd.cs: Added tests for stressing the regalloc when running with
4166         16 simd regs and when simd and fp ops share the same reg bank.
4167
4168 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4169
4170         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4171         in shared generic code, we might have to look up the class in the
4172         RGCTX.  If we use the class directly, compute its GC descriptor.
4173
4174 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4177
4178 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4179
4180         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4181         check for errors. Fixed the case when the class with the Main
4182         method is broken.
4183
4184 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4185
4186         Contributed under the terms of the MIT/X11 license by
4187         Jerry Maine <crashfourit@gail.com>.
4188
4189         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4190
4191 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4194
4195 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4196
4197         * method-to-ir.c: Fix naming of stelem and ldelem.
4198
4199 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * driver.c (main_thread_handler): Check that the assembly loaded
4202         matches the filename when doing AOT.
4203
4204 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4205
4206         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4207         call it anymore.
4208
4209         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4210         utils/mono-sigcontext.h).
4211
4212         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4213         #ifdef.
4214
4215 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4216
4217         * mini.c (mono_codegen):
4218         Call profiler hook to keep track of method code buffers.
4219
4220 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4221
4222         * method-to-ir.c: Invoke write barriers for the
4223         Interlocked.(Compare)Exchange JIT intrinsics.
4224
4225 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4226
4227         * Makefile.am (version.h): Fix issues when built out of tree.
4228         Remove some redundant 'grep's piped through 'sed's.
4229
4230 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4231
4232         This patch is contributed under the terms of the MIT/X11 license
4233
4234         * mini-ppc.c (mono_arch_output_basic_block):
4235         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4236         for bits 32-47 with signed load/store diplacements for bits
4237         48-63.  Use prefered base/offset order for indexed form.
4238         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4239         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4240         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4241         OP_LOADI2_MEMBASE): Same.
4242         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4243         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4244         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4245         indexed form.
4246         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4247         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4248         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4249         OP_LOADI1_MEMINDEX): Same
4250         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4251         OP_STORER8_MEMINDEX): Same
4252         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4253         computations.
4254         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4255         for bits 32-47 with signed load/store diplacements for bits
4256         48-63.  Use prefered base/offset order for indexed form.
4257
4258 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4259
4260 This patch is contributed under the terms of the MIT/X11 license
4261
4262         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4263         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4264         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4265         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4266         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4267         cfg->stack_usage to avoid size warnings.
4268         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4269         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4270         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4271         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4272         to convert.
4273         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4274         after code varible is initialized.
4275         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4276         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4277         (mono_arch_emit_epilog): 
4278         Move Use ppc_load32 for cfg->stack_usage to avoid size
4279         warnings.
4280
4281 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4282
4283         * method-to-ir.c: The write barrier doesn't do the store anymore,
4284         so we have always to emit it.  Also, emit the wbarrier after the
4285         store.
4286
4287 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4288
4289         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4290         for argument count 3 too.
4291
4292 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4293
4294         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4295         the caller handle the exceptions.
4296         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4297         method. Fixes #524498.
4298
4299 2009-07-22  Geoff Norton  <gnorton@novell.com>
4300
4301         * mini-exceptions.c: Fix build on ia64.
4302
4303 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4304
4305         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4306         barriers.
4307
4308 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4311         code.
4312
4313 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * basic-simd.cs (Main): Pass args to the test driver.
4316
4317 2009-07-20  Geoff Norton  <gnorton@novell.com>
4318
4319         * mini-x86.h: Fix the x86 version guards to use Apple's
4320         properly defined macros.
4321
4322 2009-07-20  Geoff Norton  <gnorton@novell.com>
4323
4324         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4325         aligned access.
4326
4327 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4328
4329         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4330         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4331         the information which is needed for invokes, so only one locking+hash table
4332         lookup is needed.
4333
4334         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4335         
4336         * aot-compiler.c (add_generic_instances): Emit instances of 
4337         GenericComparer<T> for primitive types.
4338
4339 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4340
4341         * mini-posix.c: Fix linux build.
4342
4343 2009-07-19  Geoff Norton  <gnorton@novell.com>
4344
4345         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4346         mono_gdb_render_native_backtraces
4347         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4348         so we implement the sane semantics to the runtime here
4349         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4350         so we need to call it differently (mono_gdb_render_native_backtraces)
4351         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4352         here for default implementations.
4353         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4354         support Apple's weird syscall (SYS_fork) implementation and not busy
4355         loop in abort() on native crashes on OSX anymore.
4356
4357 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4358
4359         * aot-runtime.c (load_method): Change the handling of the
4360         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4361         are used.
4362
4363         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4364
4365 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4366
4367         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4368         seems to break the aot tests.
4369         
4370         * mini.c (mono_patch_info_equal): Fix the handling of 
4371         MONO_PATCH_INFO_RGCTX_FETCH.
4372
4373 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4376
4377         * mini.c (mono_patch_info_hash): Fix the handling of 
4378         MONO_PATCH_INFO_INTERNAL_METHOD.
4379         (mono_patch_info_equal): Ditto.
4380
4381 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4384         in a few places.
4385         
4386         * mini-llvm.c: Add some infrastructure for AOT support.
4387
4388 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * mini-llvm-cpp.c: Update to the latest llvm api.
4391         
4392         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4393         option to false to prevent llvm from installing signal handlers which
4394         trip up the gc.
4395         
4396 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4397
4398         * cpu-x86.md:
4399         * cpu-amd64.md: Revert previous change as those instructions
4400         take 2 separate arguments. Remember to read the arch docs more
4401         carefully next time.
4402
4403 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4404
4405         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4406
4407 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4408
4409         * mini-ppc.c: exploit multiple load/store units if available (rest of
4410         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4411         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4412
4413 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4414
4415         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4416         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4417
4418 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4419
4420         * cpu-x86.md: Fix missing clobbering from trancendental simd
4421         ops.
4422
4423         * cpu-amd64.md: Same.
4424
4425 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4426
4427         Contributed under the terms of the MIT/X11 license by
4428         Jerry Maine <crashfourit@gail.com>.
4429
4430         * basic-simd.cs: Added tests for single and doulble indexers.
4431
4432         * cpu-amd64.md: Added simd opcode information.
4433
4434         * mini-amd64.c: Added IR to native simd generation code.
4435         Added simd register names and function that returns them.
4436
4437         * mini-amd64.h: Added marcos to turn on simd code compilation in
4438         amd64. Added max simd register count marco. Added caller/callee
4439         register mask marcos. Added marcos to use simd register bank.
4440
4441         * mini.h: Added helper marco for shufling dwords and simple
4442         floats.
4443
4444 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4447
4448         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4449
4450         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4451         the length of the native code as well.
4452
4453         * basic-simd.cs: Add a test for #521662.
4454
4455 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4456
4457         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4458
4459 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4460
4461         * mini.c: Register function for getting the IP from a signal
4462         context with metadata.
4463
4464 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4467         call a generic class init trampoline if needed. Fixes #519336.
4468
4469         * generics.cs: Add a test.
4470         
4471 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4472
4473         * method-to-ir.c: When doing a call which might be remote from
4474         shared generic code to other shared code with open type arguments,
4475         get the remoting invoke wrapper from the RGCTX and do an indirect
4476         call to it.
4477
4478 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4479
4480         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4481         after the unbox trampoline in the full-aot case.
4482
4483 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4484         
4485         * mini.c: Move initialization of jit_mutex before debugger initialization
4486         
4487         to avoid crashes.
4488         
4489         
4490         * Info.plist: added Info.plist and link flag to enable the mono executable
4491         to access other processes. Requires codesigning of the executable to work.
4492         
4493         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4494         
4495         compile on OS X.
4496         
4497
4498 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4501
4502 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4505         when the generic instance is an instantiation of a subclass of the
4506         methods class. Fixes #517166.
4507
4508 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4511         code.
4512
4513         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4514         AOTed code.
4515
4516         * CMakeLists.txt: Add minimal support for installation.
4517
4518 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4519
4520         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4521         determine whenever a method is directly callable to a separate function.
4522
4523         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4524         needed ones as a result of the previous change.
4525
4526         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4527         type of register arrays.
4528
4529         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4530         type of register arrays.
4531
4532 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4533         
4534         Contributed under the terms of the MIT/X11 license by
4535         Jerry Maine <crashfourit@gail.com>.
4536
4537         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4538
4539 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4540
4541         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4542
4543 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4544
4545         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4546         dump of structure return value. Fix some formatting.
4547         * cpu-s390x.md: Fix lengths of instruction sequences.
4548         * mini-s390.c: Minor formatting changes.
4549
4550 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4551
4552         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4553         Use sigaction on freebsd as well.
4554
4555 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4558         uses #ifdef on it.
4559         
4560         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4561
4562 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4563
4564         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4565
4566 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4567
4568         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4569
4570 2009-06-20  Martin Baulig  <martin@ximian.com>
4571
4572         * debug-mini.c
4573         (MonoDebuggerThreadFlags): New enum typedef.
4574         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4575         (mono_debugger_thread_created): Added `gpointer func' argument;
4576         initialize the new `thread_flags' field.
4577
4578 2009-06-18  Martin Baulig  <martin@ximian.com>
4579
4580         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4581         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4582
4583         * debug-debugger.c
4584         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4585         flag in `MONO_DEBUGGER__info.runtime_info'.
4586
4587         * driver.c
4588         (mono_main): Call mini_debugger_set_attach_ok() if generics
4589         sharing is disabled.
4590
4591 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4592
4593         * aot-compiler.c (add_wrappers): Fix a warning.
4594
4595         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4596         the ppc load/store macro changes.
4597
4598 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4601
4602         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4603         not just the got symbol.
4604
4605         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4606         on ppc.
4607
4608         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4609         ppc.
4610         
4611         * aot-compiler.c: Remove some fixmes.
4612
4613         * driver.c (mono_main): Print a helpful message when cross-compiling.
4614
4615         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4616
4617         * method-to-ir.c (initialize_array_data): Do the optimization if the
4618         target byte order is little endian, instead of the host byte order.
4619
4620         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4621         wrappers into the mscorlib image, Emit a unique plt symbol for each
4622         image, emit symbols for plt entries.
4623
4624         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4625         a .size directive.
4626         
4627 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * aot-compiler.c (add_wrappers): Avoid calling 
4630         mono_marshal_get_type_info () since it can assert for some types.
4631
4632         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4633         ldtoken are used inside wrappers.
4634
4635         * helpers.c: Add support for prefixing tools with the arch name.
4636
4637         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4638         quantities when using ilp32.
4639
4640         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4641         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4642
4643         * image-writer.c: Use .long on ilp32.
4644
4645         * aot-compiler.c: Use 32 bit loads on ilp32.
4646         
4647 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4650
4651         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4652
4653         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4654
4655         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4656         second got slot of every aot image.
4657         
4658         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4659         aot on platforms with function pointers.
4660
4661         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4662         support for aot/full aot on ppc/ppc64.
4663         
4664         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4665         arguments which are needed on ppc.
4666
4667         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4668         argument.
4669
4670         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4671         
4672         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4673
4674         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4675
4676         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4677
4678         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4679
4680 2009-06-17  Geoff Norton  <gnorton@novell.com>
4681
4682         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4683
4684 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4687         to control whenever the dwarf writer is in xdebug or aot mode.
4688         (emit_class_dwarf_info): Use a separate abbrev for structures without
4689         children.
4690
4691         * aot-compiler.c: Pass the appending parameter to 
4692         mono_dwarf_writer_create ().
4693
4694         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4695         falls through to its next bblock. Fixes #513931.
4696
4697         * iltests.il: Add a test.
4698
4699         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4700         infor even if emit_line is FALSE, as the apple linker seems to require it.
4701
4702         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4703
4704         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4705         gcc does.
4706         (emit_fde): Ditto.
4707
4708 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4709
4710         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4711         mips build.
4712
4713 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4716         'has_call_handler' fields.
4717
4718         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4719
4720         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4721         first bblock if not needed. Fixes #512790.
4722         
4723 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4724
4725         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4726         
4727         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4728         wrappers.
4729
4730         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4731         remoting-invoke-with-check wrappers, which are not needed when running with
4732         full-aot, since it doesn't support remoting.
4733         
4734 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4737
4738         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4739         method info, it is not used anymore.
4740
4741         * mini.h: Bump AOT file format version.
4742         
4743         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4744         word smaller.
4745
4746         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4747         change above.
4748         
4749         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4750
4751         * mini.h: Bump AOT file format version.
4752         
4753 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4756         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4757         iphone.
4758
4759         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4760         of CKFINITE and FBGE for VFP.
4761
4762 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * aot-compiler.c: Don't align code to 16 bytes on arm.
4765         
4766         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4767         before the methods they belong to.
4768
4769         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4770         the full-aot case if possible, since the trampoline will be called right 
4771         away.
4772
4773         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4774         trampolines to 1024 after the change above.
4775
4776         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4777         trampoline to save 8 bytes per trampoline.
4778
4779         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4780         change above.
4781
4782 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4785
4786 2009-06-08  Martin Baulig  <martin@ximian.com>
4787
4788         * debug-mini.c
4789         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4790         (_mono_debugger_throw_exception): Don't make this static.
4791         (_mono_debugger_unhandled_exception): Likewise.
4792         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4793
4794         * debug-mini.c
4795         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4796         (_mono_debugger_throw_exception): Add function prototype.
4797         (_mono_debugger_unhandled_exception): Likewise.
4798
4799         * mini-exceptions.c
4800         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4801         arg; return the first exception handler if the exception is caught
4802         and we're running inside the debugger.
4803         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4804         improve exception handle inside runtime-invoke, check whether the
4805         exception is actually caught in the method being invoked and not
4806         by the runtime-invoke-wrapper.
4807
4808 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4809
4810         * image-writer.c: Improve support for the osx assembler.
4811
4812         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4813         support them.
4814
4815 2009-06-08  Martin Baulig  <martin@ximian.com>
4816
4817         * debug-mini.c
4818         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4819         (_mono_debugger_throw_exception): Don't make this static.
4820         (_mono_debugger_unhandled_exception): Likewise.
4821         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4822
4823         * debug-mini.c
4824         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4825         (_mono_debugger_throw_exception): Add function prototype.
4826         (_mono_debugger_unhandled_exception): Likewise.
4827
4828         * mini-exceptions.c
4829         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4830         arg; return the first exception handler if the exception is caught
4831         and we're running inside the debugger.
4832         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4833         improve exception handle inside runtime-invoke, check whether the
4834         exception is actually caught in the method being invoked and not
4835         by the runtime-invoke-wrapper.
4836
4837 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * image-writer.c (append_subsection): Don't align subsections of the
4840         debug_line section as a workaround.
4841
4842         * dwarfwriter.c: Emit line number info in the AOT case as well.
4843
4844 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4845
4846         This patch is contributed under the terms of the MIT/X11 license
4847
4848        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4849        code_len <= code_size
4850
4851 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4854
4855 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4856
4857         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4858         invoke wrappers, we now use trampolines instead.
4859
4860 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4861
4862         * mini-darwin.c: The exception thread must not be registered with
4863         the GC.
4864
4865 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4866
4867         * mini-gc.c: Disable the code because it makes SGen crash.
4868
4869 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4870
4871         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4872         instead of asserting.
4873
4874 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4877         output file after the code has been compiled.
4878
4879 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4882
4883 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4886         entries distinction to simplify the code.
4887
4888         * mini.h: Bump AOT file format version.
4889         
4890 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * objects.cs: Fix the signature of one of the tests.
4893
4894         * mini.c (mini_create_ftnptr): New helper function, moved here from
4895         object.c.
4896         (mini_get_addr_from_ftnptr): Ditto.
4897         (mini_init): Install the new helpers.
4898
4899 2009-05-28  Martin Baulig  <martin@ximian.com>
4900
4901         Correctly initialize the debugger when embedding Mono.
4902
4903         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4904         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4905         see documentation in mini_debug_running_inside_mdb().
4906
4907         * debug-debugger.c
4908         (mini_debug_running_inside_mdb): New function to check whether
4909         we're running inside mdb.
4910
4911         * mini.c (mini_init): Call mini_debugger_init() if we're running
4912         inside the debugger.
4913
4914         * driver.c (mono_main): Moved the call to mini_debugger_init()
4915         into mini_init() to make this work when embedding Mono.
4916
4917         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4918         calls to mini_debugger_init().
4919
4920         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4921         mono_debugger_main() -> mini_debugger_main() and put them inside a
4922         `MONO_DEBUGGER_SUPPORTED' conditional.
4923
4924 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4925
4926         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4927         this is no longer in use.
4928         * mini.h: Same.
4929
4930 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4931
4932         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4933
4934         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4935         methods.
4936
4937 2009-05-27  Martin Baulig  <martin@ximian.com>
4938
4939 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4940
4941         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4942         long_conv_to_r_un to 64 bits.
4943
4944         * cpu-x86.md: Increase the instruction size due to the changes.
4945
4946         * iltests.il.in: Add regression test.
4947
4948         Fixes #467201.
4949
4950 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4951
4952         * objects.cs: Move the previous test from basic.cs to here.
4953
4954 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4955
4956         * basic.cs: Add regression test for #506915.
4957
4958 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4959
4960         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4961         optimization we must check the bb of the first byte of stobj as
4962         it's the only one set in cil_offset_to_bb.
4963
4964         Fixes #506915.  
4965
4966 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * image-writer.c: Fix pointer directive on ppc64.
4969
4970 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * image-writer.c (asm_writer_emit_section_change): Avoid using
4973         .bss subsections on ppc too.
4974
4975 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * image-writer.c: Fix the definition of TARGET_ASM_....
4978         
4979         * image-writer.c: Fix the emission of assembler directives in the last
4980         change.
4981
4982         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4983         exception throwing code to accomodate ppc64.
4984
4985         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4986         size to work on ppc64 too.
4987
4988         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4989         too.
4990
4991         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4992         the assembler dialect instead of using platform specific defines.
4993
4994 2009-05-22  Geoff Norton  <gnorton@novell.com>
4995
4996         * mini-arm.c (get_call_info): If a structure is split between the stack
4997         and argument registers, we should not advance the stack pointer by the entire
4998         native size, but just by the amount that spilled.
4999
5000 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5003         correctly.
5004
5005 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5008         wrappers normally.
5009         
5010         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5011         methods so wrapper don't get added twice.
5012         (add_generic_instances): Don't add methods of arrays.
5013
5014         * generics.cs: Mark one test as !FULLAOT.
5015
5016 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * mini-x86.c (emit_move_return_value): Remove unused vars.
5019
5020 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5023         decomposing 8 bytes structs into a LCALL.
5024
5025         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5026         pointer for where to store the returned regs.
5027
5028         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5029         state the concern.
5030
5031         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5032
5033 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5034
5035         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5036         without getenv.
5037
5038 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5039
5040         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5041
5042         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5043         generics.
5044
5045 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * local-propagation.c (mono_local_cprop): Avoid local propagation
5048         across paired add/sub if the first instruction dest reg is it's
5049         source reg. For example:
5050
5051         int_add_imm R12 <- R12 [1] clobbers: 1
5052         int_sub_imm R42 <- R12 [1] clobbers: 1
5053
5054         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5055         maintain the math identify.
5056
5057         Fixes #505375.
5058
5059 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5060
5061         * Makefile.am: avoid going on the network just to get the revision,
5062         use git log instead
5063
5064 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5065
5066         Fixed estimate for short branches on amd64 (they were off mark, and
5067         enabling call prolog-epilog instrumentations caused assertions).
5068         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5069         estimate for the maximum length of this basic block.
5070         * mini-amd64.c:
5071         - mono_arch_emit_prolog: compute max_length for each basic block
5072           (instead of max_offset), and inflate size estimate also for entry bb
5073           in case of code instrumentation.
5074         - mono_arch_output_basic_block: get rid of "cpos" (the current
5075           estimated "position" in the code), and always use "offset" instead,
5076           which is accurate; at the beginning of the function quickly recompute
5077           max_offset for all the remaining blocks, starting from the current
5078           cfg->code_len (which is correct, and not estimated) and using the
5079           estimated block lengths computed previously.
5080
5081 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5082
5083         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5084         functions, it is already done in the caller.
5085
5086         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5087
5088         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5089         MONO_ARCH_GSHARED_SUPPORTED define.
5090
5091         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5092
5093         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5094         function.
5095
5096 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5099         call to mono_marshal_get_rgctx_invoke ().
5100
5101         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5102         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5103         gshared use the static rgctx trampolines now.
5104         
5105         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5106         platform supports it.
5107
5108 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5111
5112         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5113
5114 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5115
5116         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5117
5118         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5119         for ppc.
5120
5121 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5122
5123         Made it possible for mono_arch_instrument_epilog to preserve
5124         argument registers, otherwise instrumenting the "epilogue" before
5125         a tail call would clobber them.
5126         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5127         if like mono_arch_instrument_epilog but with an additional parameter
5128         that states if argument registers must be preserved.
5129         * mini.c: implemented mono_arch_instrument_epilog as a call to
5130         mono_arch_instrument_epilog_full without asking to preserve argument
5131         registers (this makes the existing code work as usual).
5132         * mini-amd64.c:
5133         - mono_arch_instrument_epilog: add parameter to transform it into
5134         mono_arch_instrument_epilog_full, and preserve argument registers
5135         when required.
5136         - mono_arch_output_basic_block, OP_TAILCALL case: call
5137         mono_arch_instrument_epilog_full.
5138         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5139         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5140         only transformed mono_arch_instrument_epilog into
5141         mono_arch_instrument_epilog_full.
5142
5143 2009-05-15  Geoff Norton  <gnorton@novell.com>
5144
5145         * mini-darwin.c: This works on arm now.
5146
5147 2009-05-14  Geoff Norton  <gnorton@novell.com>
5148
5149         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5150         embedding api.
5151
5152 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5155         label names.
5156
5157         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5158         wrappers during full aot mode correctly.
5159
5160         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5161         methods correctly.
5162
5163         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5164         mono_metadata_type_hash ().
5165
5166 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5167
5168         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5169         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5170         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5171         Removed MONO_INST_BRLABEL from the instruction flags, and the
5172         remaining code that used it, because we do not support branches inside
5173         basic blocks (and branch target labels) anymore.
5174         * Makefile.am: As part of the above cleanup, remove reference to
5175         BURG files which don't exist anymore.
5176
5177 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5180         osx.
5181
5182         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5183         to use mono_arch_throw_corlib_exception.
5184
5185         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5186         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5187
5188         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5189         domain mempool.
5190
5191         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5192
5193         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5194         for the got to make debugging easier and to avoid confusing it with the
5195         system got.
5196         
5197         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5198         method so a breakpoint can be set when using gdb.
5199
5200 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5201
5202         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5203         on mono_method_get_imt_slot ().
5204
5205         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5206         num_decodes variables.
5207
5208         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5209         change as it doesn't seem to work.
5210         
5211         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5212         wrappers.
5213
5214 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5217         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5218
5219         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5220         builder when using full aot.
5221
5222         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5223         here, it is already handled.
5224         
5225         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5226         correctly for IMT.
5227
5228         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5229
5230         * mini-arm.h: Enable IMT for full aot.
5231         
5232         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5233         arch doesn't support it.
5234
5235         * mini.c (mini_init): Don't disable IMT for full aot if the
5236         architecture supports it.
5237
5238         * mini.h (MonoAotTrampoline): New enum containing the different types
5239         of 'numerous' trampolines.
5240         (MONO_AOT_FILE_VERSION): Bump this.
5241
5242         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5243         static rgctx trampolines. Add support for full-aot IMT thunks.
5244
5245         * mini-amd64.h: Enable IMT for full aot.
5246
5247         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5248         to exclude tests belonging to a category.
5249
5250         * generics.cs: Mark some tests with a !FULLAOT category.
5251
5252         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5253         generics tests.
5254
5255 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5258         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5259         (emit_plt): Fix a warning.
5260
5261 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5264         back into aot-compiler.c to a place where the other functions shared by
5265         the runtime and aot compiler are.
5266         
5267         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5268         as done previously, instead of in MonoAotFileInfo, since pointers might have
5269         alignment requirements.
5270
5271         * mini.h: Bump AOT file format version.
5272
5273 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5274
5275         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5276         that is used at runtime from the aot-compiler.c, this makes it
5277         work on setups that remove the AOT compiler from the output
5278         image. 
5279
5280 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5283         PPC.
5284
5285         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5286
5287         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5288
5289         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5290         stuff to mono_arch_decompose_long_opts ().
5291         (mono_decompose_opcode): Remove some dead code.
5292
5293 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5296         cmethod can be null for quite a some reasons.
5297
5298 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5299
5300         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5301
5302 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5305
5306 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5309         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5310         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5311         calls returning structures by addr on amd64.
5312
5313         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5314
5315         * iltests.il.in: Restructure the tail call tests a bit.
5316         
5317 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5318
5319         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5320         for virtual methods too.
5321
5322 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5323
5324         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5325         due to regression in verifying System.dll.
5326
5327 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5330         in dynamic methods.
5331
5332         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5333         instances.
5334
5335         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5336         g_str_hash () which can change.
5337
5338         * driver.c (mini_regression): Disable optimizations not supported by
5339         the cpu. Fixes #500019.
5340
5341         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5342         build.
5343
5344 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5345
5346         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5347         to the latest LLVM code.
5348
5349 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5350
5351         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5352
5353 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5356         x86/amd64.
5357
5358         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5359         no longer saving offsets, so just save the patch types along with the other
5360         info.
5361         * aot-runtime.c (load_patch_info): Update after the changes to 
5362         encode_patch_list ().
5363         (decode_got_entry): Removed, merged into load_patch_info ().
5364         (is_shared_got_patch): Removed, call the same function from
5365         aot-compiler.c.
5366
5367         * mini.h: Bump aot file format version.
5368         
5369         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5370         half-finished no-dlsym code.
5371
5372         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5373         option.
5374
5375         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5376         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5377
5378 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5381         buffer length to work with AOT code.
5382
5383         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5384         ldfld/stfld opcodes.
5385
5386         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5387         as it is not used.
5388
5389         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5390
5391         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5392
5393         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5394         LLVM API.
5395
5396         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5397         if needed. Don't decompose long operations when using llvm.
5398
5399 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5400
5401         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5402         PAGESIZE constant.
5403
5404         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5405
5406 2009-05-03  Martin Baulig  <martin@ximian.com>
5407
5408         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5409         mono_debugger_insert_method_breakpoint() since the class init
5410         handler we're inserting at the top of the method already gives us
5411         a notification.
5412
5413 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5414
5415         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5416         to mono_arch_decompose_long_opts () for x86 and arm.
5417
5418 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5421         TARGET_AMD64 here.
5422
5423 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5424
5425         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5426         JIT code.
5427
5428 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5431         number of trampolines used in full-aot mode.
5432
5433         * aot-compiler.c: Add an ntrampolines option to set the number of 
5434         trampolines emitted in full-aot mode.
5435
5436 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5439         a volatile load. Get rid of get_tempname (), llvm assigns names
5440         automatically.
5441
5442         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5443         builder function.
5444
5445         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5446         a value.
5447
5448         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5449         level 1.
5450
5451         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5452         to the same register as a fixed sreg2. Fixes #497271.
5453
5454         * iltests.il.in: Add a new test.
5455
5456 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5459         stack, since pushes complicate exception handling.
5460
5461         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5462         the stack if they are passed using moves.
5463
5464         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5465
5466         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5467         when using llvm.
5468
5469         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5470         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5471         of FMOVE if it is an R4.
5472
5473 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5476
5477         * mini.h (LLVMCallInfo): New structure to store calling convention 
5478         information for the LLVM back end similar to the CallInfo structures in 
5479         the back-ends.
5480
5481         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5482         call information in a format usable by LLVM.
5483         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5484
5485         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5486         mono_llvm_emit_call () when compiling using LLVM.
5487
5488         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5489         comments to all functions. Fix memory leaks. Add a public init/cleanup
5490         function.
5491
5492         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5493
5494         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5495         mono_array_new_va () jit icall.
5496         
5497 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5498
5499         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5500         multiple machine description files to be specified.
5501         * mini-ops.h: fixes for cross-compilation.
5502
5503 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5504
5505         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5506         some porting work.
5507
5508 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5509
5510         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5511         to prevent asserts in various passes. Fixes #497220.
5512
5513 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5516         a racy assert.
5517
5518         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5519         table to avoid duplicates.
5520
5521         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5522         
5523         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5524         option is used.
5525
5526 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5527
5528         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5529         is for method or field access.
5530
5531 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5532
5533         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5534         a Value to stdout.
5535
5536         * mini-llvm.c (mono_llvm_emit_method): Use it.
5537         
5538         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5539         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5540         on volatile values.
5541
5542         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5543         synchronized methods.
5544
5545         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5546
5547         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5548
5549         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5550         OP_LOADI8_MEM.
5551
5552         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5553         allowing some options to be set dynamically.
5554
5555 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5556
5557         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5558         unconditional branch.
5559
5560         * mini.h (MonoTrampolineType): Add new trampoline type 
5561         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5562         compiled code.
5563
5564         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5565         function.
5566
5567         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5568         creation function.
5569
5570         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5571         is enabled. Instead, use the llvm vcall trampoline.
5572         
5573         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5574
5575         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5576         
5577         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5578         functions.
5579
5580         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5581         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5582
5583         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5584         OP_IA64_CSET opcode.
5585
5586         * mini.c: Fix a warning.
5587
5588         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5589         THROW to the appropriate llvm type.
5590
5591 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5592
5593         * mini.c (mini_method_compile): Add statistics for methods JITted
5594         with/without LLVM.
5595
5596 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5597
5598         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5599         OP_IA64_CMP_<cond>_IMM opcodes.
5600
5601 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5604         corlib exceptions.
5605
5606         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5607         correctly.
5608
5609         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5610         GENERICINST.
5611
5612 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5613
5614         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5615
5616 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5619         support.
5620
5621         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5622         rgctx invoke trampolines for x86.
5623
5624         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5625         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5626         (mono_arch_get_vcall_slot): Simplify this.
5627
5628 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5629
5630         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5631         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5632
5633 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5636         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5637
5638         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5639
5640         * liveness.c (visit_bb): Remove a needless assert.
5641
5642 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5643
5644         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5645         full aot support to the arch specific code.
5646
5647         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5648
5649         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5650
5651         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5652         
5653         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5654         collect information about the delegate invoke impl trampolines.
5655
5656         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5657         to save trampolines during full-aot mode.
5658
5659         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5660         creation function which returns a trampoline which sets the rgctx
5661         argument.
5662         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5663         wrapper if possible.
5664         (mono_delegate_trampoline): Ditto.
5665
5666         * mini.c (mono_jit_runtime_invoke): Ditto.
5667
5668         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5669         
5670         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5671
5672         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5673         
5674 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5675
5676         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5677         just setting the opcode to OP_NOP.
5678
5679 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5680
5681         * mini.c (mini_method_compile): Put the last change inside an 
5682         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5683         
5684         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5685         and extend live ranges to cover the whole method when using xdb.
5686
5687         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5688         do it in the trampolines.
5689
5690         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5691         needed.
5692
5693         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5694         
5695         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5696         call code in full-aot mode since IMT is disabled there.
5697         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5698         new JIT no longer has that restriction.
5699
5700         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5701
5702         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5703         a more compact format.
5704         (mono_aot_wrapper_name): New function to return a unique name for a
5705         wrapper method, also used by the AOT runtime.
5706
5707         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5708         aot-compiler.c.
5709
5710         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5711         when a ICollection<T> etc is encountered.
5712         (add_generic_instances): Process method arguments/locals too.
5713         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5714         trampoline names.
5715
5716         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5717         
5718 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5719
5720         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5721
5722         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5723
5724         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5725         representing the result of the decomposition. Nullify instructions
5726         instead of setting them to OP_NOP since nops can't have registers
5727         set.
5728
5729 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5732         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5733         info. Strip 'mapping symbols' on ARM.
5734
5735         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5736         
5737         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5738         this with the native genmdesc.
5739
5740 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5741
5742         * aot-runtime.c:  Fixing the MSVC build.
5743
5744         Code is contributed under MIT/X11 license.
5745
5746 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5749         JITted code depends on it.
5750
5751 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5752
5753         * aot-compiler.c: Use new MonoGenericParam accessors.
5754
5755 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5756
5757         Reduce memory usage and improve correctness wrt MonoGenericParam
5758         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5759         handing.  Avoid allocating MonoGenericParams, but use the ones in
5760         the container itself.
5761
5762 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5763
5764         * tasklets.c: Return exceptions in the out argument.
5765
5766 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5769         opcode. Use pointer types in more places instead of casting them to 
5770         integers.
5771
5772         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5773         optimizations.
5774         (mono_llvm_optimize_method): New helper function to optimize a method.
5775
5776         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5777         widening code so it could be called from more places.
5778         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5779         code paths in the call opcodes.
5780
5781 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5782
5783         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5784
5785 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5786
5787         * dwarfwriter.c: Use _ to separate class name 
5788         components as gdb can't handle '.'. Represent reference variables
5789         as 'class <NAME>&'.
5790         
5791         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5792
5793         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5794         
5795         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5796
5797         * gc-test.cs: New file with GC stack marking tests.
5798         
5799         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5800         negative numbers for vfp.
5801
5802         * basic-float.cs: Add a test.
5803         
5804 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5805
5806         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5807
5808 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5809
5810         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5811         part of tasklet/continuation support.
5812
5813 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5814
5815         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5816         amd64 opcodes inside an ifdef.
5817
5818         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5819         of complex types.
5820         
5821         * dwarfwriter.c (emit_type): Emit the class info for classes.
5822
5823 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5824
5825         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5826
5827         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5828
5829         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5830
5831         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5832
5833 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5834
5835         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5836
5837         * mini-llvm.c: Update comments.
5838
5839         * mini.h (COMPILE_LLVM): New macro.
5840
5841         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5842
5843         * ssa.c (mono_ssa_compute): Ditto.
5844         
5845         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5846         the unwind ops from a DWARF FDE.
5847
5848         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5849         methods by extracting the dwarf unwind ops from the unwind info generated
5850         by LLVM.
5851         
5852         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5853         calls.
5854
5855         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5856         addressing modes.
5857
5858 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * Makefile.am (llvm_sources): Enable this.
5861
5862         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5863         failing back to the JIT if something cannot be handled.
5864
5865         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5866         compiling with LLVM.
5867
5868         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5869         compiling with LLVM.
5870
5871         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5872         compiling with LLVM.
5873
5874         * mini-ops.h: Add a few opcodes needed by LLVM.
5875
5876         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5877         has no unwind info.
5878
5879         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5880         backend.
5881
5882         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5883
5884         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5885
5886 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5887
5888         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5889         ridiculously large methods.
5890
5891 2009-03-31  Martin Baulig  <martin@ximian.com>
5892
5893         * debug-debugger.c (debugger_remove_breakpoint): Call
5894         mono_debugger_remove_class_init_callback ().
5895
5896 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5897
5898         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5899         right before emitting code, not at the start.
5900
5901         * mini.c (mono_postprocess_patches): Extract this into a separate function
5902         from mono_codegen ().
5903
5904         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5905         byref types correctly.
5906
5907 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5910         by the last change.
5911
5912 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5913
5914         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5915         indirect calls, this avoids problems where get_vcall_slot () would get
5916         confused by the native code for the instruction preceeding the call.
5917         (mono_arch_get_vcall_slot): Simplify this.
5918         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5919
5920         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5921         register allocator now seems to depend on them instead of the data in
5922         cpu-<ARCH>.md.
5923
5924         * mini.c (mini_method_compile): Throw the correct type of exception if
5925         mono_method_get_header () fails because of a loading error.
5926
5927 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini.c (mini_method_compile): Clear the loader error if the method
5930         header cannot be decoded.
5931
5932         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5933         interface methods on proxies correctly.
5934
5935         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5936         this argument for vtype methods. Add precise liveness info for arguments.
5937
5938         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5939         LIVERANGE_START/END opcodes.
5940
5941         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5942         for arguments and values in registers.
5943
5944 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5945
5946         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5947         return a valuetype. Fixes #487518.
5948
5949         * iltests.il: Add a test.
5950         
5951         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5952
5953         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5954         closed over a null reference correctly.
5955
5956 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5957
5958         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5959
5960 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5961
5962         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5963         allocated to the same registers as fixed sregs.
5964
5965 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5966
5967         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5968         ATOMIC_CAS_IMM ops.
5969
5970         * method-to-ir.c: Handle more cases for
5971         Interlocked.CompareExchange.
5972
5973         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5974         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5975         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5976
5977 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * aot-runtime.c (decode_method_ref): Fix a warning.
5980
5981         * unwind.c (mono_unwind_frame): Ditto.  
5982
5983 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5986         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5987
5988         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5989         fix the handling of large values in the ALU_PC_G0_NC relocation.
5990
5991 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5994
5995 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5996
5997         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5998         ops.
5999
6000 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6001
6002         * method-to-ir.c: MINI_OP3 needs a comma.
6003
6004         * method-to-ir.c, mini.h, mini.c: Remove
6005         mono_init_op_sreg_counts ().
6006
6007 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6008
6009         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6010         OP_JMP.
6011         
6012         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6013         assertion.
6014
6015         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6016
6017         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6018         code somewhat.
6019
6020 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6021
6022         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6023         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6024         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6025         operations.
6026
6027 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * driver.c: Change location of gc_wrapper.h.
6030
6031         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6032         inside finally clauses correctly. Fixes #485721.
6033
6034         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6035         after the change above.
6036
6037         * exceptions.cs: Add a test.
6038         
6039 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6040
6041         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6042
6043         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6044         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6045         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6046
6047         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6048         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6049
6050 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6051
6052         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6053         Simplify logic for ensure_method_is_allowed_to_call_method. 
6054         Handle wrappers on callers.
6055
6056 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6057
6058         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6059         them don't run yet.
6060
6061         * basic-simd.cs: Fix the names of some test methods.
6062
6063 2009-03-18  Geoff Norton  <gnorton@novell.com>
6064
6065         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6066
6067 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6070
6071 2009-03-17  Jb Evain  <jbevain@novell.com>
6072
6073         * driver.c: remove now uneeded call to mono_gc_base_init before
6074         mono_profiler_load.
6075
6076 2009-03-17  Jb Evain  <jbevain@novell.com>
6077
6078         * dwarfwriter.c (token_handler): handle more cases.
6079
6080 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6081
6082         * method-to-ir.c: Remove more dead code (that was required only
6083         because of method_is_safe). Fix compiler warnings.
6084
6085 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6086
6087         * method-to-ir.c: Remove unneeded/useless method_is_safe
6088         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6089
6090 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6091
6092         * mini.c (mini_method_compile): Print the method been compiled with
6093         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6094         for people not familiar with the runtime.
6095
6096 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6097
6098         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6099         a managed object which is later put into a GList. Return its class instead.
6100
6101         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6102         stack slots when using sgen.
6103
6104 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6105
6106         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6107
6108 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6109
6110         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6111         > so it works on the first vreg as well.
6112
6113 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6114
6115         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6116         trigger randomly.
6117
6118         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6119         
6120         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6121         implement GArray.
6122
6123 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6126         native->IL offset mapping.
6127
6128 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6131
6132         * basic.cs: Add a test.
6133
6134 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6135
6136         * mini-x86.c (mono_arch_output_basic_block): Use different
6137         registers in case the ones we want to overwrite are used by the
6138         other operand.  Fixes regression in #480807.
6139
6140 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6143
6144         * dwarfwriter.c (emit_line_number_info): The line number info for
6145         IL code was off by one. Fix that.
6146
6147         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6148         stack.
6149
6150 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6151
6152         Contributed under the terms of the MIT/X11 license by Steven
6153         Munroe <munroesj@us.ibm.com>.
6154
6155         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6156         Fixes #483462.
6157
6158 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6161         as well.
6162
6163 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6166         the delegate ctor handling code. Fixes #482638.
6167         
6168         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6169         #481458.
6170
6171         * iltests.il.in: Add a test.
6172         
6173         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6174         mini-posix.c.
6175
6176 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6177
6178         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6179         is shared generic code, return the trampoline, even if the method
6180         has already been compiled.  Fixes #479763.
6181
6182         * mini.c, mini.h: New function
6183         mono_jit_find_compiled_method_with_jit_info() which is the same as
6184         mono_jit_find_compiled_method() but also returns the jit info.
6185
6186 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6187
6188         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6189         for methods which actually have one.  For all other methods, make
6190         sure the this argument var is live the whole method.
6191
6192         * mini.c (mini_method_compile): Every shared method has a
6193         this/vtable/mrgctx info.  Fixes #480807.
6194
6195 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6196
6197         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6198         generic/imt thunks where some entries branch through the vtable,
6199         while other entries branch directly.
6200
6201 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6204
6205         * mini-windows.c: Ditto.
6206         
6207         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6208         ctors.
6209
6210 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6213         down an assert.
6214
6215 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6216
6217         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6218         #481403.
6219
6220 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6221
6222         * exceptions-x86.c: Include debug-mini.h - fixes build.
6223
6224 2009-03-04  Martin Baulig  <martin@ximian.com>
6225
6226         * debug-mini.c: Clean up the exception API and add documentation.
6227         (mono_debugger_handle_exception): New public method; this is
6228         called when throwing an exception or encountering an unhandled one.
6229         (mono_debugger_call_exception_handler): Formerly known as
6230         mono_debugger_handle_exception(); this is used to tell the
6231         debugger that we're about to invoke an exception handler.
6232
6233 2009-03-04  Martin Baulig  <martin@ximian.com>
6234
6235         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6236         ../metadata/mono-debug-debugger.c; save and reset exception state.
6237
6238 2009-03-02  Martin Baulig  <martin@ximian.com>
6239
6240         * debug-mini.c: Moved the debugger exception handling here from
6241         ../metadata/mono-debug-debugger.c.
6242
6243         * debug-mini.h
6244         (MonoDebuggerExceptionAction): New exception typedef.
6245
6246         * debug-mini.c
6247         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6248
6249         * exceptions-amd64.c
6250         (mono_amd64_throw_exception): Use the new debugger exception
6251         handling code.
6252
6253         * mini-exceptions.c
6254         (mono_handle_exception_internal): Don't call
6255         mono_debugger_unhandled_exception() here.
6256
6257 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * mini.c aot-compiler.c: Update after the changes to 
6260         mono_marshal_get_runtime_invoke ().
6261
6262         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6263         Virtual generic methods might not have method->slot set, work around
6264         that.
6265
6266         * generics.cs: Add a test.
6267
6268 2009-03-02  Geoff Norton  <gnorton@novell.com>
6269
6270         * mini.c:
6271         * driver.c: Allow signal chaining of SIGFPE as well.
6272
6273 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6274
6275         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6276         this since it now receives the method not its generic context in the
6277         IMT reg.
6278
6279         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6280         generic/imt thunks where some entries branch through the vtable, while
6281         other entries branch directly.
6282
6283         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6284
6285         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6286         support for interface methods as well.
6287
6288         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6289         using the normal IMT thunks.
6290
6291         generics.cs: Add new tests.
6292         
6293         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6294         the generic inst to the generic imt thunks. This fixes AOT support, 
6295         improves consistency with the normal IMT thunks, and makes it easier to
6296         add support for interface generic virtual methods later.
6297
6298         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6299         
6300 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6301
6302         * driver.c (mono_set_signal_chaining): New public API function to enable
6303         signal chaining on POSIX platforms.
6304
6305         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6306         (si@lindenlab.com) to implement signal chaining. The original patch was
6307         contributed under the MIT X/11 license:
6308         https://bugzilla.novell.com/show_bug.cgi?id=318894
6309
6310 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6313         too until it can be made to run on amd64.
6314
6315 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6318         to  get_generic_context_from_code () + get_call_info () if possible.
6319
6320 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6321
6322         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6323         suspend-on-sigsegv functionality.
6324
6325         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6326         to suspend when a native SIGSEGV is received. This is useful for debugging
6327         crashes which don't happen under gdb, since a live process contains more
6328         information than a core file.
6329
6330         * mini-exceptions.c (mono_print_thread_dump): Use 
6331         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6332
6333         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6334
6335         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6336         
6337         * basic-float.cs: Disable the tests which currently fail on amd64.
6338
6339         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6340         value to mono_arch_patch_callsite () to fix crashes.
6341         
6342         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6343
6344 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6347         nop code by patching the call address to point to the nullified class init
6348         trampoline, as the former does not seem to be safe on SMP machines.
6349
6350 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6351
6352         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6353         they were wrong.
6354
6355 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * basic-float.cs basic-calls.cs: Fix warnings.
6358
6359 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6360
6361         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6362         correct frame pointer in the LMF.  Should fix #478394.
6363
6364 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6367
6368         * image-writer.c: Make the binary writer less verbose.
6369
6370 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6371
6372         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6373         are called from runtime invoke wrappers.
6374
6375 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6376
6377         * cpu-ppc.md (store_memindex): Increase the size of this.
6378
6379 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6382
6383         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6384
6385         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6386         OP_LCONV_TO_R_UN.
6387
6388         Last fix for of #467201.
6389
6390
6391 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6394
6395         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6396         and long_conv_to_r8_2:
6397
6398         Fixed part of #467201.
6399
6400 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6403
6404         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6405         conversion to 32 bits.
6406
6407         * cpu-x86.md: Increase the size of int_conv_to_r4.
6408
6409         * basic-float.cs: Add a test for this.
6410
6411         Fixed part of #467201.
6412
6413 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6414
6415         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6416
6417         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6418         conversion to 64 bits.
6419
6420         * basic-float.cs: Add a test for this.
6421
6422         Fixed part of #467201.
6423
6424 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6425
6426         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6427
6428         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6429         This behavior is compatible with MS.
6430
6431         * iltest.il.in: Add a test for this.
6432
6433         Fixed part of #467201.
6434
6435 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6438
6439         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6440         change the precision of the value.
6441
6442         * cpu-x86.md: Define len for float_conv_to_r4.
6443
6444         * basic-float.cs: Add a test for this.
6445
6446         Fixed part of #467201.
6447
6448 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6449
6450         * mini.c: Adjust locking order to the new semantics where the loader lock
6451         comes first.
6452
6453 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6454
6455         * aot-runtime.c:
6456         * mini-amd64.c:
6457         * mini-arm.c:
6458         * mini-ia64.c:
6459         * mini-mips.c:
6460         * mini-ppc.c:
6461         * mini-sparc.c:
6462         * mini-trampolines.c:
6463         * mini-x86.c:
6464         * mini.c:
6465         * tramp-alpha.c:
6466         * tramp-amd64.c:
6467         * tramp-arm.c:
6468         * tramp-hppa.c:
6469         * tramp-ia64.c:
6470         * tramp-mips.c:
6471         * tramp-ppc.c:
6472         * tramp-s390.c:
6473         * tramp-s390x.c:
6474         * tramp-sparc.c:
6475         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6476
6477 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6478
6479         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6480         as it is incorrect.
6481
6482 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6485         for cctors if needed.
6486
6487 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6488
6489         * mini-ppc.c: Fix build on Darwin.
6490
6491 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6492
6493         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6494         version instead of 3 as valgrind doesn't like version 3.
6495
6496         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6497
6498         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6499         usable for hashing methods.
6500         (emit_extra_methods): Use the new hash to avoid putting every method in the
6501         same hash bucket.
6502
6503         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6504
6505         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6506         whenever a method ref could match a method.
6507         
6508         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6509         test to fail.
6510         
6511         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6512         methods refs.
6513
6514         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6515
6516         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6517         the encoding buffer.
6518
6519         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6520         mono_method_get_header () on inflated methods as an optimization.
6521
6522 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6523
6524         * ssa.c (fold_ins): Fix another crash if the instruction following the
6525         switch was optimized away.
6526
6527 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6528
6529         Contributed under the terms of the MIT/X11 license by Steven
6530         Munroe <munroesj@us.ibm.com>.
6531
6532         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6533
6534 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6537         around the mono_domain_alloc calls, it is now done by the functions
6538         themselves.
6539
6540         * aot-compiler.c (compile_method): Only add wrappers referenced by
6541         the method if compiling with full AOT.
6542         (mono_compile_assembly): Error out if --aot=full is specified on
6543         a platform where it is not supported.
6544
6545         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6546         on ARM too.
6547
6548         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6549         AOT support.
6550
6551         * aot-runtime.c (load_named_code): Handle 
6552         mono_arm_throw_exception_by_token.
6553
6554         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6555
6556         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6557         unaligned.
6558
6559         * Makefile.am (fullaotcheck): Exit if a test fails.
6560
6561         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6562         on ARM.
6563         (mono_compile_assembly): Handle the assembler failing.
6564
6565         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6566         accepting subsections of .bss.
6567
6568         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6569         was optimized away.
6570
6571         * aot-compiler.c: Remove some unused includes.
6572         
6573         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6574         now in MonoImageWriter.
6575
6576         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6577         code sequence which matches a non-virtual call. Fixes #472654.
6578
6579 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6580
6581         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6582         xdebug code.
6583         
6584         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6585         use the image/dwarf writers directly.
6586
6587         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6588         field.
6589
6590         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6591         MonoDwarfWriter.
6592
6593         * image-writer.h: Fix some typos.
6594
6595         * dwarfwriter.h dwarfwriter.c: New files.
6596         
6597         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6598         separate module.
6599
6600         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6601         argument to return unwind info.
6602
6603         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6604
6605         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6606         
6607         * aot-runtime.c (decode_method_ref): Add a case for 
6608         MONO_AOT_METHODREF_WRAPPER_NAME.
6609
6610         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6611         for AOT.
6612
6613         * aot-compiler.c (encode_method_ref): Use the new constants.
6614
6615         * aot-runtime.c (decode_method_ref): Ditto.
6616
6617         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6618         be compiled, not the icall itself.
6619
6620 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6621
6622         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6623         using decode_method_ref ().
6624
6625         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6626         convert it to an in32. Fixes #475859.
6627
6628         * arrays.cs: Add a test.
6629
6630 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6631
6632         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6633         OP_LCONV_TO_U2.
6634
6635         * basic-long.cs: Add a test.
6636
6637 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6638
6639         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6640         remove the frame pointer in leaf methods which don't receive any
6641         arguments, don't throw exceptions and don't do dynamic stack
6642         allocations.
6643
6644 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6645
6646         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6647         the fail_tramp changes. Hopefully fixes #475132.
6648
6649 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6650
6651         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6652         instead of mono_metadata_signature_dup_full.
6653
6654 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6655
6656         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6657         for processing jump tables. Fixes #473787.
6658
6659 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6660
6661         * mini-generic-sharing.c: mini_method_get_context() just calls
6662         mono_method_get_context_general() now.
6663
6664         * mini.c, mini.h: Moved get_object_generic_inst(),
6665         construct_object_context_for_method() and
6666         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6667
6668 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6669
6670         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6671         basic block fell through to its successor bblock without a branch. Fixes
6672         #474718.
6673
6674         * iltests.il.in: Add a test.
6675         
6676         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6677         (can_encode_patch): We can now handle arrays of generic parameters and
6678         array methods.
6679
6680         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6681
6682         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6683         the AOT file to avoid some #ifdefs in aot-runtime.c
6684
6685         * mini.h: Bump AOT file format version.
6686
6687 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6688
6689         * Makefile.am (fullaotcheck): Make this run the tests.
6690
6691         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6692
6693 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6694
6695         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6696         individually.  Fixes #473482.
6697
6698 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6701
6702 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6703
6704         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6705         (mono_compile_assembly): Hush compile warnings about
6706         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6707         code path.
6708
6709 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6712
6713         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6714
6715         * aot-compiler.c: Fix arm support.
6716
6717         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6718         img_writer_emit_unset_mode () function.
6719
6720         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6721         (mono_unwind_get_dwarf_pc_reg): Ditto.
6722
6723         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6724         Move almost all platform specific code to a set of arch_ functions, 
6725         and document them to ease porting.
6726         
6727         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6728
6729         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6730
6731         * aot-compiler.c: Extract the image writing functionality into a separate
6732         module to reduce the size of this file.
6733
6734 2009-02-09  Geoff Norton  <gnorton@novell.com>
6735
6736         * mini-s390.c: Fix the signature of emit_sig_cookie.
6737
6738 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6739
6740         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6741
6742         * aot-runtime.c (is_shared_got_patch): Ditto.
6743
6744         * aot-runtime.c (load_named_code): Cope with the fact that 
6745         decode_got_entry () won't decode the patch fully if its corresponding got
6746         entry is already filled.
6747         
6748         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6749         Initialize *ji.
6750         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6751
6752         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6753         as the moving pointer instead of 'buf' for consistency with the rest of the
6754         codebase.
6755         (mono_arch_create_monitor_exit_trampoline): Ditto.
6756
6757         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6758         generic_class_init trampolines.
6759         (add_generic_class): Extract some code from add_generic_instances () into a
6760         separate function so it can be called from other places too.
6761         (compile_method): Call add_generic_class () for the classes of inflated methods
6762         referenced by the method.
6763         (can_encode_patch): Allow references to generic parameters.
6764
6765         * aot-runtime.c: Add support the patches required by the new trampolines.
6766         
6767         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6768         support.
6769
6770         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6771         full-aot support.
6772
6773         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6774         this from get_throw_pending_exception, make the signature full aot compatible.
6775
6776         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6777
6778         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6779
6780         * exceptions.cs: Add a test.
6781
6782 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6785         use the DWARF_DATA_ALIGN constant instead.
6786
6787         * exception-<ARCH>.c: Update after the above change.
6788
6789         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6790         dwarf unwinder.
6791
6792         * mini-arm.c: Enable the dwarf unwinder.
6793
6794         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6795         instead of mono_class_setup_vtable ().
6796
6797 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6798
6799         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6800         dwarf unwinder.
6801
6802         * mini-x86.h: Enable the dwarf unwinder.
6803
6804 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6805
6806         Fix mcs/tests/test-7.cs
6807         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6808         2009-02-03.
6809
6810 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * mini.c (print_jit_stats): Remove some unused statistics.
6813
6814 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6817
6818 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6819
6820         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6821         the method we get from mono_object_get_virtual_method() because
6822         that function does it properly, now.
6823
6824 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6827         opcodes. Fixes #472775.
6828
6829 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6830
6831         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6832         fact that mono_find_jit_info() sometimes returns the context
6833         corresponding to the jit info in new_ctx.  Fixes #472600.
6834
6835 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6836
6837         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6838         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6839         klass->enum_basetype directly.
6840
6841         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6842         enum subtypes.
6843
6844         * unwind.c: Avoid 0 sized arrays.
6845
6846 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6847
6848         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6849         size on systems with 64k pages. Fixes #471389.
6850
6851 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6852
6853         Contributed under the terms of the MIT/X11 license by Steven
6854         Munroe <munroesj@us.ibm.com>.
6855
6856         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6857         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6858         necessary.
6859
6860 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6861
6862         Contributed under the terms of the MIT/X11 license by Steven
6863         Munroe <munroesj@us.ibm.com>.
6864
6865         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6866         comparison fix.
6867
6868         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6869         The trampoline can be longer on PPC64.
6870
6871 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6872
6873         Contributed under the terms of the MIT/X11 license by Steven
6874         Munroe <munroesj@us.ibm.com>.
6875
6876         * mini-ppc.c: Compiler warning fixes and trivial code
6877         simplifications.
6878
6879 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6880
6881         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6882         ins->dreg which could be a hardware register, not a vreg.
6883
6884         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6885         
6886         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6887         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6888
6889         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6890         
6891         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6892         ->dreg, that is not the vreg we are looking for.
6893
6894         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6895
6896         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6897         LIVERANGE_END.
6898
6899         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6900         strange crashes.
6901
6902 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6903
6904         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6905
6906         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6907         the line diff is 0.
6908
6909         * aot-compiler.c: Add xdebug support on x86.
6910
6911         * unwind.c: Add x86 support.
6912         
6913         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6914         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6915
6916         * mini.c (mini_method_compile): Ditto.
6917         
6918         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6919         the variable index.
6920
6921         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6922         which mimic .push_section/.pop_section in GAS.
6923         
6924         * aot-compiler.c: Emit precise live range information for variables.
6925
6926         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6927
6928         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6929         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6930         them.
6931
6932         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6933         the live ranges of variables.
6934
6935         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6936         of the variable in terms of native offsets.
6937
6938 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6939
6940         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6941         
6942 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6943
6944         Contributed under the terms of the MIT/X11 license by Steven
6945         Munroe <munroesj@us.ibm.com>.
6946
6947         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6948         order (offset then base reg) for ppc_load_multiple_regs.
6949         (emit_save_saved_regs) Correct operand order for
6950         ppc_store_multiple_regs.
6951         (mono_arch_get_call_filter): Correct operand order for
6952         ppc_load_multiple_regs.
6953
6954         * mini-ppc.c (emit_memcpy): Fix operand order for
6955         ppc_load_reg_update and ppc_store_reg_update.
6956         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6957         (mono_arch_emit_epilog): Correct operand order for
6958         ppc_load_multiple_regs.
6959
6960         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6961         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6962
6963 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6964
6965         * cpu-ppc64.md: Fixed storer4_memindex length.
6966
6967 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6968
6969         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6970         line number info.
6971         
6972         * aot-compiler.c (emit_line_number_info): Optimize this.
6973
6974 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6977         
6978         * aot-compiler.c: Add debug info for methods without debug info by
6979         emitting an IL file and having the line number info referencing that file.
6980
6981         * aot-compiler.c: Optimize the size of the generated line number info.
6982
6983         * aot-compiler.c: Emit line number info in xdebug mode.
6984
6985         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6986         million arguments.
6987
6988 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6989
6990         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6991
6992         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6993         is used.
6994
6995 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6996
6997         * basic-calls.cs: Test for the weird crash found on arm.
6998         
6999 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * cpu-arm.md: Increase the size of storer8_membase_reg and
7002         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7003
7004         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7005         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7006         reg to LR otherwise we'll be loading/storing from just the offset.
7007
7008 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7009
7010         Question: if we are storing gint32's inside the "*native_offset",
7011         should we change the signature to "gint32 *native_offset" to
7012         ensure that we do not have type definition problems?
7013         
7014         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7015         an int * as this is what the other function expects, causes
7016         problems with Freescale's compiler that defined int32_t to be a
7017         long and makes int incompatible 
7018
7019 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7020
7021         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7022         filename conflict with bjam.
7023
7024 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7025
7026         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7027         as it might use decomposed ops.
7028
7029 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7032
7033         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7034         is defined.
7035
7036         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7037
7038         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7039         offsets.
7040
7041         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7042         way registers are stored in MonoContext on arm.
7043
7044         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7045         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7046
7047         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7048
7049         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7050
7051         * mini.c (mini_init): Register mono_isfinite.
7052
7053         * jit-icalls.c (mono_isfinite): New jit icall.
7054
7055         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7056         
7057         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7058         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7059         the parent frame.
7060
7061 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7062
7063         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7064         separate frame and stack pointers, so we must use FP to find the register
7065         spill area.
7066         The FP reg is retrieved from the MonoContext::regs array.
7067
7068 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7069
7070         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7071         as FPA requires it.
7072
7073 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7074
7075         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7076         return R4 and R8 when not running under softfloat.
7077
7078         Fixes basic-calls.exe
7079
7080 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * mini-arm.c: Implement some overflow opcodes.
7083
7084 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7085
7086         * ssa.c: handle another alloca.h
7087
7088         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7089         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7090         MONO_ARCH_USE_SIGACTION. 
7091
7092         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7093         capability defines.
7094
7095         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7096
7097         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7098         PPC targets as sigaction does not exist on all platforms, define
7099         this on a per-platform basis.
7100
7101         Instead of erroring out if the platform is not defined, include
7102         mini-ppc-os.h, and expect that the OS specific setting provides
7103         the required information.   
7104
7105 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * aot-compiler.c: Fix --enable-minimal=aot.
7108
7109 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7110
7111         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7112         previous change.
7113
7114 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7115
7116         * exceptions-arm.c: Fix warnings.
7117
7118         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7119         ARM.
7120
7121         * mini-x86.c: Fix --enable-minimal=jit build.
7122
7123         * mini.c: Really fix --enable-minimal=jit build.
7124         
7125         * mini.c (construct_object_context_for_method): Move this outside
7126         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7127
7128         "Backported" of r124984 from 2.0 branch.
7129         
7130         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7131
7132         "Backport" of r124977 + r124978 from 2.0 branch.
7133         
7134         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7135         to avoid calling mono_exception_from_token () from the throw trampoline.
7136         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7137         for throwing corlib exceptions, this fixes full-aot support for corlib
7138         exceptions.
7139
7140         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7141
7142 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7143
7144         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7145         part of the changes to split the code in mini into operating
7146         system specific files.
7147
7148         This patch was done by copying mini.c to the respective files to
7149         preserve SVN history.
7150
7151 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7154
7155 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7156
7157         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7158         remoting-invoke-with-check wrappers of shared methods.
7159
7160         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7161
7162 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7163
7164         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7165         optimization if the top of stack is the last instruction in the
7166         bblock.  Otherwise it might have been used after its definition.
7167         Fixes #469742.
7168
7169 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7172         method as well when get_vcall_slot () fails to match a code sequence.
7173
7174         * mini-arm.c: Fix the android build, which doesn't have
7175         __aeabi_read_tp.
7176
7177 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7178
7179         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7180         the s390x build.
7181
7182 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7183
7184         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7185
7186 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7189         and put its id into jinfo->used_regs. This is only used on amd64,
7190         which is currently the only platform generating unwind info.
7191
7192         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7193         the dwarf unwinder. This is required to correctly handle async exceptions
7194         like thread abort and stack overflows, which can happen while a method
7195         is in the middle of its prolog or epilog.
7196         
7197         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7198         the unwind info belonging to an AOTed method.
7199
7200         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7201         into cfg->unwind_ops.
7202         
7203         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7204
7205         * mini.c (mini_init): Call mono_unwind_init ().
7206         (mini_cleanup): Call mono_unwind_cleanup ().
7207
7208         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7209         unwind info to be shared between methods.
7210
7211         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7212         saved in the LMF.
7213
7214         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7215         get_throw_pending_exception () to avoid initialization races.
7216
7217         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7218         mono_arch_exceptions_init () function.
7219
7220         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7221
7222 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * mini.c (mono_get_domain_intrinsic): New helper function.
7225         (mono_get_thread_intrinsic): Ditto.
7226
7227         * mini-arm.c mini-ia64.c: Use the new helper functions.
7228         
7229         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7230         the last constrained_call change, since it is needed in the non-AOT
7231         case as well.
7232
7233         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7234         
7235         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7236         mono_get_lmf_addr () on arm eabi linux.
7237
7238 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7239
7240         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7241         code sequence which matches a non-virtual call.
7242
7243 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7244
7245         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7246         stack pointer (r1).
7247
7248 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7249
7250         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7251         runtime-invoke wrappers, since they are also shared based on signature.
7252
7253 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7254
7255         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7256         info from the (correct) context.
7257
7258 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7259
7260         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7261         
7262         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7263         using dwarf unwinding info. Not yet used.
7264
7265         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7266
7267 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7268
7269         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7270         descriptors.
7271
7272         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7273         special case and handle mono_arch_delegate_invoke_impl() returning
7274         function descriptors.
7275
7276         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7277         trampolines return function descriptors, too.
7278
7279 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7280
7281         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7282         out_of_line optimization.
7283
7284 2009-01-21  Martin Baulig  <martin@ximian.com>
7285
7286         * mini.h
7287         (MonoCompile): Added `disable_deadce_vars' to disable removing
7288         unused variables.
7289
7290         * mini.c
7291         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7292         inside the debugger.
7293
7294         * liveness.c (mono_analyze_liveness): Don't remove any unused
7295         variables if `cfg->disable_deadce_vars' is set.
7296
7297 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7298
7299         * method-to-ir.c: Only apply exception constructor optimization if
7300         the the method actually belongs to an exception class.  Fixes
7301         #467456.
7302
7303 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7306         change inside a #ifdef __mono_ppc64__.
7307
7308         * aot-compiler.c (compile_method): Remove the previous limitation.
7309
7310         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7311         on type variables in AOTed code.
7312         
7313         * aot-compiler.c (compile_method): Skip generic methods having type 
7314         constraints on their generic parameters.
7315
7316         * aot-compiler.c (compile_method): Check for methods which cannot be
7317         encoded inside RGCTX_FETCH patches as well.
7318
7319         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7320         build.
7321
7322 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7323
7324         * method-to-ir.c: Force the vtable variable in shared generic code
7325         for the case that they might show up on a stack trace where they
7326         are needed.
7327
7328         * mini-exceptions.c: Save and use generic sharing info as well as
7329         IP in stack traces to resolve shared generic instantiations.
7330
7331 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7334         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7335
7336 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7337
7338         * method-to-ir.c: Do generic sharing for array constructors.
7339
7340 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7341
7342         * mini-exceptions.c (mono_print_thread_dump): Add information
7343         about the thread state using wapi_current_thread_desc.
7344
7345 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7346
7347         * basic-simd.cs: Tests for the new constructors. 
7348
7349 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7350
7351         * mini-ops.h: Added OP_EXPAND_*
7352
7353         * cpu-x86.md: Same.
7354
7355         * mini-x86.c (mono_arch_output_basic_block): Same.
7356         
7357         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7358
7359 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * iltests.il.in: Add a test for #467385.
7362
7363 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7364
7365         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7366         thread been cleaned up is not the same currently in execution.
7367
7368         Fixes appdomain-unload crashes on windows, osx and linux variants
7369         without the __thread keyword.
7370
7371 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7372
7373         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7374         (koush@koushikdutta.com). Implement this for android.
7375
7376         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7377         begins with a digit.
7378
7379         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7380         mono_marshal_get_write_barrier ().
7381
7382 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7383
7384         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7385         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7386         that pass them on a register pair.
7387
7388         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7389         test was crashing due to that.
7390
7391 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7392
7393         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7394         trampoline code. Include ucontext.h only if available.
7395
7396 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7397
7398         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7399         and doesn't check whether it's sharable, like it was before
7400         removing the shared generics hash.  This brings IronPython
7401         performance back to what it was before that change.
7402
7403 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7404
7405         * method-to-ir.c: Handle delegate invocation optimization earlier,
7406         otherwise it would be handled (much more slowly) by the
7407         final/sealed optimization.
7408
7409 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7410
7411         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7412         domain is not set. Fixes #465864.
7413
7414 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7415
7416         * method-to-ir.c: Don't stop sharing of generic methods with catch
7417         clauses - we already handle those.
7418
7419 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7420
7421         * mini.c, mini.h: lookup_generic_method() is now
7422         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7423         making the shared_generics_hash obsolete.
7424
7425 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7426
7427         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7428         use the red zone.  Make room on the stack first and then use it,
7429         not the other way around.
7430
7431 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7432
7433         * mini.c (mini_init): Call mono_xdebug_init ().
7434
7435         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7436
7437 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7440
7441         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7442         trampolines.
7443
7444         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7445         debug+unwind info for trampolines.
7446
7447         * mini.c (mono_create_unwind_op): New helper function.
7448
7449         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7450
7451 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7452
7453         * aot-compiler.c: Fix the build.
7454
7455 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * Makefile.am: Update dtrace-prelink.sh location.
7458
7459 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7462         optimization. Fixes #464520.
7463
7464 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7465
7466         * mini-amd64.c : Adding code to save/restore non-volatile registers
7467            on Winx64.
7468
7469         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7470           registers on Winx64.
7471
7472         Contributed under MIT/X11 license.
7473
7474 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7477         __GNUC_MINOR__ which can break when the major version changes.
7478
7479 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7480
7481         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7482
7483 2009-01-07  Geoff Norton  <gnorton@novell.com>
7484
7485         * helpers.c:  Allow mono -v -v -v to work on darwin.
7486
7487 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7488
7489         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7490           pattern. 
7491
7492         Contributed under MIT/X11 license.
7493
7494 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7495
7496         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7497         instead of directly accessing type->data.klass. Fixes #462016.
7498         (mono_allocate_stack_slots_full): Ditto.
7499
7500         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7501         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7502
7503         * aot-compiler.c (emit_plt): Fix ARM build.
7504
7505 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7506
7507         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7508         
7509         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7510         change.
7511
7512         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7513         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7514         #463357.
7515
7516         * iltests.il.in: Add a regression test.
7517
7518 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7519
7520         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7521
7522 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7523
7524         * basic-simd.cs: Add a regression test for #462457.
7525
7526 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7527
7528         * mini-ops.h: Add a definition of XPHI.
7529
7530         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7531
7532         * ssa.c (op_phi_to_move): Handle XPHI.
7533
7534         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7535
7536         Fixes #462457
7537
7538 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7539
7540         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7541
7542 2008-12-31  Geoff Norton  <gnorton@novell.com>
7543
7544         * mini-ppc.c: The prolog size allocated can be too small for darwin
7545         ppc32 under certain circumstances.  Also fix a small logic bug.
7546
7547 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7550         while loading AOT methods.
7551
7552         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7553         since only the former is nulled out after a successful cast. This prevents
7554         crashes with rethrown exceptions when using --debug=casts.
7555
7556 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7557
7558         * mini.h: New macro for checking whether a method is final,
7559         i.e. whether the method or its class is marked final.
7560
7561         * method-to-ir.c: Use the new macro for all final-checks
7562         consistently.  Fixes the crash in the System.ServiceModel tests.
7563
7564 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7565
7566         * mini-exceptions.c (get_exception_catch_class): Corrected another
7567         overly strict assertion.
7568
7569 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7570
7571         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7572         Clobbering it is not allowed because the caller might use it as
7573         the vtable register in the interface call.
7574
7575 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7576
7577         * mini-exceptions.c (get_exception_catch_class): Corrected an
7578         overly strict assertion.
7579
7580 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7581         
7582         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7583
7584         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7585
7586         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7587
7588         * cpu-mips.md: correct lengths for certain long_ opcodes.
7589
7590         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7591
7592         * 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().
7593         
7594 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7595
7596         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7597         
7598 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7599         
7600         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7601         
7602 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7603
7604         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7605         next basic block.
7606         
7607 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7608
7609         * 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
7610
7611         * 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)
7612         
7613 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7614         
7615         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7616         
7617 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7618
7619         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7620         gshared code. Fixes #458947.
7621
7622         * generics.cs: Add a test.
7623
7624 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7625         
7626         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7627         
7628         * mini-mips.c: first pass n32 code generation.
7629
7630         * mini-mips.h: datatypes and defines for n32 support.
7631
7632         * exceptions-mips.c: first pass n32 code generation.
7633         
7634         * tramp-mips.c: first pass n32 code generation.
7635         
7636         * cpu-mips.md: add long_ opcodes.
7637         
7638 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7639
7640         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7641
7642         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7643         
7644         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7645         
7646         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7647
7648         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7649
7650         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7651
7652         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7653
7654         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7655
7656         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7657
7658 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7661
7662 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7663
7664         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7665
7666 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7667
7668         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7669         descriptors for helper functions directly in front of the code.
7670
7671 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7672
7673         * method-to-ir.c: Removed an unnecessary assertion.
7674
7675 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * method-to-ir.c: Merge SGEN changes from the old JIT.
7678
7679 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * driver.c (compile_all_methods_thread_main): Handle failure of
7682         mono_get_method ().
7683
7684 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7685
7686         * mini-ppc.c: Merged with mini-ppc64.c.
7687
7688         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7689
7690         * Makefile.am: Use the same sources for PPC and PPC64.
7691
7692         * mini-ppc64.c: Removed.
7693
7694 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7695
7696         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7697         code to mono_bb_is_fall_through.
7698         
7699         * branch-opts.c (mono_remove_critical_edges): Same.
7700
7701 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7702
7703         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7704         expect that an OP_BR_REG will be there.
7705
7706 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7709         for the many branch ops. The original check miss OP_BR_REG.
7710
7711         Fixes #457574.
7712         
7713 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7714
7715         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7716
7717 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7720         while holding the aot lock.
7721
7722 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7723
7724         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7725         
7726 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7727
7728         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7729           to release all runtime callable wrappers held by the runtime.
7730
7731         Contributed under MIT/X11 license.
7732
7733 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7734
7735         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7736           for Winx64.
7737
7738         Contributed under MIT/X11 license.
7739
7740 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7743         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7744
7745 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7746
7747         * cpu-mips.md: fix ckfinite length
7748
7749         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7750         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7751         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7752         
7753 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7754
7755         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7756         
7757 2008-12-08  Geoff Norton  <gnorton@novell.com>
7758
7759         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7760         size by 8 bytes as well.
7761
7762 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7763
7764         * basic-simd.cs: Fix method names for Vector16b.
7765         
7766 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7767
7768         * basic-simd.cs: Fix method names for Vector16sb.
7769
7770 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7771
7772         * basic-simd.cs: Fix method names for Vector8us.
7773         
7774 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7775
7776         * basic-simd.cs: Fix method names for Vector8s.
7777         
7778 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * basic-simd.cs: Fix method names for Vector4ui.
7781
7782 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7783
7784         * basic-simd.cs: Fix method names for Vector2l.
7785
7786 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7787
7788         * basic-simd.cs: Fix method names for Vector2d.
7789
7790 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7791
7792         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7793         that are extension methods.
7794
7795 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7796
7797         * basic-simd.cs: Fix method names for Vector4f.
7798
7799 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7800
7801         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7802         as such. Fixes #456669.
7803
7804 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7805
7806         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7807         
7808 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7809
7810         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7811         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7812         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7813         (mips_adjust_stackframe): handle FP spills
7814                 
7815         * mini-ops.h: add mips_mtc1_s2
7816         
7817         * cpu-mips.md: add mips_mtc1_s2
7818         
7819 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * unwind.c: New file, move the unwind info encoding functions here from
7822         aot-compiler.c, so they could be used at runtime too.
7823
7824 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7825
7826         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7827         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7828         
7829 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7830
7831         * mini-mips.c: cleanup warnings
7832         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7833         (mips_adjust_stackframe): handle case of taking the address of stack locals
7834         
7835 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * aot-compiler.c: Implement a few functions missing from the asm writer.
7838         (emit_method_code): Only write symbols for methods when using the bin
7839         writer, since the assembler can't deal with the characters in our method
7840         names.
7841
7842         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7843
7844         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7845         call.
7846
7847         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7848         a bit to also restore %rax.
7849
7850 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7851
7852         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7853
7854 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7855
7856         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7857         arguments.
7858
7859 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7860
7861         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7862
7863         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7864         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7865
7866         * exceptions-ppc64.c: Removed.
7867
7868         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7869
7870 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7871
7872         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7873         tramp-ppc64.c.
7874
7875         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7876
7877         * tramp-ppc64.c: Removed.
7878
7879 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7882         the TYPESPEC table.
7883
7884 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7885
7886         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7887
7888         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7889         mini-ppc.h instead of mini-ppc64.h.
7890
7891         * mini-ppc64.h: Removed.
7892
7893 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7894
7895         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7896         
7897         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7898         
7899 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7900
7901         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7902         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7903         code easier.
7904
7905 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7906
7907         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7908
7909 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7912
7913 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7914
7915         * basic-simd.cs: Tests for operator == and != on Vector4f.
7916
7917 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7918
7919         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7920
7921         * simd-intrinsics.c: Kill useless enum.
7922
7923 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7924
7925         * cpu-mips.md: add long_conv_to_ovf_i4_2
7926         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7927
7928 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7929
7930         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7931         
7932         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7933
7934 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7935
7936         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7937         
7938 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * basic-simd.cs: Add tests for new methods.
7941
7942 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * simd-intrinsics.c: Add support for operator == and !=
7945         on Vector4(u)i.
7946
7947         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7948
7949 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7952
7953 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7956
7957         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7958         MONO_PATCH_INFO_ICALL_ADDR.
7959
7960         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7961
7962         * aot-compiler.c: Resurrect full-aot support.
7963
7964 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7965
7966         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7967         
7968 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7969
7970         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7971         
7972 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7973
7974         * basic-simd.cs: Fix tests to work under ppc.
7975         Remove tests for methods that will be removed.
7976
7977 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7978
7979         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7980         generic type (via a typedef or typeref) correctly.
7981
7982 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7983
7984         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7985         diagnose an assertion failure.
7986
7987 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7988
7989         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7990         Fix trampoline size.
7991
7992         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7993         conversion opcodes are implemented natively instead via emulation.
7994
7995 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7996
7997         * cpu-mips.md: remove mips_xori
7998
7999         * mini-ops.h:  remove mips_xori
8000
8001         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8002
8003         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8004         
8005         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8006         
8007 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8008
8009         * cpu-mips.md: fix instruction lengths.
8010
8011         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8012
8013         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8014
8015         * mini-ops.h: fix slti / sltiu op profiles.
8016         
8017 2008-12-02  Martin Baulig  <martin@ximian.com>
8018
8019         * method-to-ir.c (mono_method_to_ir): Disable debugging
8020         information for the init locals block to make the debugger stop
8021         after all locals have been initalized.
8022
8023 2008-12-02  Martin Baulig  <martin@ximian.com>
8024
8025         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8026         running inside the debugger.
8027
8028 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8031         is enabled.
8032
8033         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8034         alu->alu imm optimization which only shows if deadce is disabled.
8035
8036         * aot-compiler.c: Rename the function names for the binary and asm writers
8037         so they can coexist in the same process. Rework the xdebug code to use the
8038         asm writer. This avoids the need to call into the runtime to dump the
8039         debugging info. Add more debugging info for types.
8040
8041         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8042
8043         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8044         cpu description tables, they can't occur in cpu-<ARCH>.md.
8045
8046         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8047         the stack in CEE_LDFLDA. Fixes #450542.
8048
8049         * generics.cs: Add a new test.
8050
8051 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8052
8053         * mini-ops.h: updated MIPS opcodes
8054         * mini-mips.c: decompose long opts
8055         * mini-mips.h: decompose long opts
8056         
8057 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8058
8059         * cpu-mips.md: fix length on int_rem_un
8060         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8061         
8062 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8065
8066         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8067
8068 2008-11-29  Martin Baulig  <martin@ximian.com>
8069
8070         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8071         mono_debug_using_mono_debugger() in addition to the
8072         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8073
8074 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8075
8076         * mini-ops.h: updated more MIPS opcodes
8077         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8078         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8079         
8080 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8081
8082         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8083
8084 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8085
8086         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8087         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8088         * mini-ops.h: correct selected mips opcode entries
8089         
8090 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8091
8092         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8093         make them work.
8094
8095 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8096
8097         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8098
8099 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8100
8101         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8102         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8103         * mini-mips.h: disable IMT
8104         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8105         
8106 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8107
8108         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8109
8110 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8111
8112         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8113
8114 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8115
8116         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8117         consistency.
8118
8119 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8122         for Set/GetVector aligned versions.
8123
8124 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8125
8126         * basic-simd.cs: Add tests for Get/SetVector.
8127
8128 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8129
8130         * mini.c: Removed g_slist_append_mempool().  Now in
8131         metadata/mempool.c.
8132
8133 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8134
8135         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8136         size properly and make the bounds check optional.
8137
8138         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8139         for SetVector and IsAligned.
8140
8141 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8142
8143         * mini.c: Remove unused mono_normalize_opcodes () function.
8144
8145 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8146
8147         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8148         using the new atomic add ops now.
8149
8150         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8151         add.
8152
8153 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8154
8155         * mini-ppc64.c: Several fixes.
8156
8157 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8158
8159         * cpu-mips.md: added jump_table
8160         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8161
8162 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8163
8164         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8165
8166 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8167
8168         * mini-ops.h: corrected a handful of MIPS opcodes.
8169
8170 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8171
8172         * aot-compiler.c: MIPS to use ELF writer
8173
8174 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8175
8176         * mini-codegen.c: remove MIPS specific assert.
8177
8178 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8179
8180         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8181         fixes.  PPC64 now passes most of the runtime regressions.
8182
8183 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8186         volatile intervals a bit.
8187
8188 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8189
8190         * basic-long.cs: New test case.
8191
8192 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8193
8194         * mini.c (mini_method_compile): Disable globalra for large methods for 
8195         now.
8196
8197         * regalloc2.c (order_moves): Add fp support.
8198
8199         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8200         source bblock ends with an OP_BR_REG.
8201
8202         * ratests.cs: Add a new test.
8203
8204 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8205
8206         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8207         sharing.  PPC64 now passes generics.exe.
8208
8209 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8210
8211         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8212
8213 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8216         memory when mono_jit_info_table_find () can't find the method in the
8217         LMF case.
8218
8219         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8220         AOTed code too.
8221         
8222         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8223         writer too.
8224
8225 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8226
8227         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8228         Several fixes.  PPC64 now runs exceptions.exe and
8229         devirtualization.exe.
8230
8231 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8232
8233         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8234         arrays.exe and basic-math.exe.
8235
8236 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8237
8238         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8239         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8240
8241 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8242
8243         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8244
8245 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8246
8247         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8248
8249         * ir-emit.h: Move macros from method-to-ir.c to here.
8250
8251 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8252
8253         * mini-ops.h: Correct the long simd ops to use LREG.
8254
8255 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8258         
8259         * mini-ops.h: Correct the dreg type of a few long opcodes.
8260
8261         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8262         Add netbsd support.
8263
8264 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8265
8266         * mini-ppc.c: remove negative stack references in epilog
8267         for platforms that don't support the red zone.
8268
8269 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8270
8271         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8272         point regs.  Now PPC64 passes basic-calls.exe.
8273
8274 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8275
8276         * basic-simd.cs: Add tests for accessors of Vector2l.
8277
8278 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8279
8280         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8281
8282         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8283         
8284         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8285
8286 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8287
8288         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8289         PPC64 passes basic-long.exe.
8290
8291 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8292
8293         * decompose.c: Decompose carry and overflow add on PPC64 like on
8294         other 64 bit archs.  Don't decompose sub at all on PPC64.
8295
8296         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8297         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8298         basic-long.exe.
8299
8300 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8301
8302         * basic-simd.cs: Add tests for accessors of Vector2d.
8303
8304 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8305
8306         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8307
8308         * cpu-x86.md: Same.
8309
8310         * mini-x86.c (mono_arch_output_basic_block): Same.
8311         
8312         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8313
8314 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8315
8316         * basic-simd.cs: Add tests for accessors of Vector4f.
8317
8318 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8319
8320         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8321
8322         * cpu-x86.md: Same.
8323
8324         * mini-x86.c (mono_arch_output_basic_block): Same.
8325         
8326         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8327
8328 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8329
8330         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8331
8332 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8335
8336         * cpu-x86.md: Same.
8337
8338         * mini-x86.c (mono_arch_output_basic_block): Same.
8339         
8340         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8341
8342 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8343
8344         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8345
8346 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8347
8348         * simd-intrinsics.c: Enable setters for Vector16sb.
8349
8350 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8351
8352         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8353
8354         * cpu-x86.md: Same.
8355
8356         * mini-x86.c (mono_arch_output_basic_block): Same.
8357         
8358         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8359
8360 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8361
8362         * simd-intrinsics.c: Implement setter for Vector8us.
8363
8364 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8365
8366         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8367         for dead variables.
8368
8369 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8370
8371         * mini-ppc.c: remove references to the red zone in the prolog
8372         (for systems that don't support it).
8373
8374 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8375
8376         * cpu-ppc64.md: Fixed a few instruction lengths.
8377
8378         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8379         now.
8380
8381 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8382
8383         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8384         basic.exe now.
8385
8386 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8387
8388         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8389
8390 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8391
8392         * mini-ops.h: Added OP_INSERT_I2.
8393
8394         * cpu-x86.md: Same.
8395
8396         * mini-x86.c (mono_arch_output_basic_block): Same.
8397         
8398         * simd-intrinsics.c: Implement setter for Vector8s.
8399
8400         * simd-methods.h: Add the names of get setters of Vector8s.
8401
8402 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8403
8404         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8405         
8406         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8407         parameters.
8408
8409         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8410
8411 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8412
8413         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8414         for PPC64.  An empty program runs now.
8415
8416 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8417
8418         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8419
8420         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8421         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8422         info for JITted code is emitted into a shared library, loadable into gdb.
8423
8424 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8425
8426         * Makefile.am: Changes to build PPC64.
8427
8428         * mini-arch.h: Include mini-ppc64.h on PPC64.
8429
8430 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8431
8432         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8433         in PPC code up to r119147.
8434
8435 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8436
8437         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8438         cpu-ppc64.md: Changes for PPC64.
8439
8440         Based on code submitted by andreas.faerber@web.de at
8441         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8442         X11/MIT license.
8443
8444 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8445
8446         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8447         cpu-ppc64.md: Copied from the corresponding PPC files from
8448         r118846.
8449
8450 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8451
8452         * mini-ops.h: Added OP_ROUND.
8453
8454         * cpu-x86.md: Added round.
8455
8456         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8457
8458         * basic-math.cs: Added test_0_round to test rounding.
8459
8460         Contributed under MIT/X11 license.
8461
8462 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8463
8464         * aot-compiler.c : Fix the Winx64 build.
8465
8466         Contributed under MIT/X11 license.
8467
8468 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8469
8470         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8471         in OP_EXTRACT_R8 to avoid possible stack corruption.
8472
8473 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8474
8475         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8476
8477         * cpu-x86.md: Added extract_r8.
8478
8479         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8480         
8481         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8482         a couple of OP_EXTRACT_I4.
8483
8484         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8485
8486         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8487
8488 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8489
8490         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8491         and not 4.1. 
8492
8493 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8496         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8497
8498         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8499         are not needed any more.
8500
8501         * mini.h: Remove the unused INS_LIST macros.
8502
8503         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8504         longer needed.
8505
8506         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8507         ir-emit.h.
8508
8509         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8510         mono_alloc_ireg () instead.
8511
8512         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8513         macros.
8514
8515         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8516         on amd64.
8517
8518         * aot-runtime.c (load_aot_module): Disable AOT when running under
8519         CAS.
8520
8521         * mini-amd64.h: Change the monitor fastpath defines to check for
8522         !PLATFORM_WIN32 so they work on *bsd too.
8523
8524         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8525
8526         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8527
8528         * mini.h (MonoCompile): Remove new_ir flag.
8529
8530         * regalloc.h regalloc.c: Remove unused code.
8531
8532         * cpu-*.md: Remove more unused opcodes.
8533
8534         * simple-cee-ops.h simple-mini-ops.h: Removed.
8535
8536         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8537         
8538 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8539
8540         * aliasing.h: Removed.
8541
8542         * *.c: Remove references to aliasing.h and inssel.h.
8543
8544         * mini.c: Remove additional unused functions.
8545
8546         * mini-ops.h cpu-*.md: Remove unused opcodes.
8547
8548 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8549
8550         Remove the old JIT code.
8551
8552         * inssel*.brg: Removed.
8553
8554         * ssa.c abcremoval.c aliasing.c: Removed.
8555
8556         * ssa2.c: Renamed to ssa.c.
8557
8558         * abcremoval2.c: Renamed to abcremoval.c.
8559
8560         * *.c: Removed all !cfg->new_ir code.
8561
8562         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8563         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8564
8565         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8566         
8567 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8570         to simplify the code and cut back on the number of global symbols in the AOT
8571         file.
8572         
8573         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8574
8575 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8578         with the got/got_info tables.
8579
8580         * mini.h: Bump AOT file format version.
8581         
8582         * unwind.h: New file, contains definitions for stack unwinding.
8583
8584         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8585         to cfg->unwind_ops.
8586         
8587         * aot-compiler.c: Generalize the emitting of unwind information to use the
8588         information in cfg->unwind_ops.
8589
8590         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8591
8592         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8593         AOT method frames. Enable writing symbols for methods by default.
8594
8595 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8596
8597         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8598         and make it work with vectors of element sizes 1, 2 and 4.
8599
8600         * simd-intrinsics.c: Enable getter for all vectors with element size
8601         1, 2 or 4.
8602
8603         * simd-methods.h: Add the names of other getters.
8604
8605         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8606
8607         * cpu-x86.md: Same.
8608
8609         * mini-x86.c: Same.
8610
8611 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8612
8613         * mini-ppc.h: portability fix.
8614
8615 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8616
8617         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8618         buggy and will overwrite it.
8619
8620 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8623         Use it to emit local symbols for all methods so AOTed methods show up with
8624         their full name in gdb/valgrind output.
8625
8626 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8627
8628         * mini-ppc.c: portability fixes.
8629
8630 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8633         entries out of the if (!generic_shared...) code so it is always done.
8634         (mono_class_init_trampoline): Do the patching when running under valgrind
8635         too, newer versions of valgrind have no problems with it.
8636
8637 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8638
8639         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8640         further sections.
8641
8642 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8643
8644         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8645         filters.
8646
8647 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8648
8649         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8650
8651 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8652
8653         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8654
8655         * cpu-x86.md: Same.
8656
8657         * mini-x86.c: Same.
8658
8659         * simd-intrinsics.c: Same.
8660
8661 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8662
8663         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8664
8665 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8666
8667         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8668         to work with more Vector types.
8669
8670 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8671
8672         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8673         store the elemens directly instead of using and intermediate.
8674
8675 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8678
8679         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8680         to preserve %eax for aot plt trampolines.
8681
8682         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8683         (encode_method_ref): Flag synchronized methods so they won't go through
8684         the AOT trampoline.
8685
8686         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8687         wrappers.
8688
8689         * cpu-ia64.md (jmp): Increase max length.
8690
8691 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8692
8693         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8694         open generic classes.
8695
8696         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8697
8698         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8699         box+brtrue optimization since it causes test failures on x86.
8700
8701 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8702
8703         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8704
8705         * cpu-x86.md: Same.
8706
8707         * mini-x86.c: Same.
8708
8709         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8710         for simd ctor values. 
8711
8712         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8713         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8714
8715 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8718         LogicalRightShift.
8719
8720         * simd-instrincs.c: Same.
8721
8722         * basic-simd.cs: Same.
8723
8724 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * ratests.cs: Add more tests.
8727
8728         * regalloc2.c (add_spill_code): Handle more corner cases.
8729
8730 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8731
8732         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8733         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8734         both the source an destination of an instruction.
8735
8736 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8737
8738         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8739         wapihandles.c: more portability changes.
8740
8741 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8742
8743         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8744         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8745         safe to execute in a signal handler and the kernel provides better
8746         the info in /proc/self/smaps. Avoid the assert on sigaction during
8747         cleanup.
8748
8749 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8752         do the bblock linking hack if it is actually needed.
8753
8754         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8755         up linking.
8756
8757         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8758         crash problem is fixed.
8759
8760         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8761         bblocks.
8762
8763         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8764         for catch clauses.
8765         (mini_method_compile): Set the starting value of next_vreg to 
8766         MAX_IREGS + MAX_FREGS when using globalra.
8767
8768         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8769         filter clauses with BB_EXCEPTION_HANDLER.
8770
8771         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8772
8773 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8774
8775         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8776         space for stdcall.  Fixes regressions on Win32.
8777
8778 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8781         bblocks.
8782         (linear_scan): Remove an assert which doesn't seem to be needed.
8783
8784         * local-propagation.c (mono_local_deadce): Avoid a call to
8785         MONO_DELETE_INS which would screw up the instruction linking.
8786
8787         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8788
8789         * regalloc2.c: Upgrade to work the current JIT code.
8790
8791 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8794         case.
8795
8796         * aot-runtime.c: Remove some dead code.
8797
8798         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8799         consistency.
8800         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8801
8802         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8803         trampolines using sscanf since atoi doesn't work on large unsigned values.
8804
8805         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8806         Initialize code_size.
8807
8808 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8809
8810         * method-to-ir.c (mini_emit_inst_for_method): Make
8811         Interlocked.CompareExchange work for Int arguments on 32 bit
8812         archs, as well.
8813
8814 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8815
8816         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8817
8818 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8819
8820         * main.c Fix MSVC build.
8821
8822         Contributed under MIT/X11 license.
8823
8824 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8825
8826         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8827         alignment larger than 8 bytes are aligned correctly, too.
8828
8829         * mini.c: Honor the min_align field of MonoClass when laying out
8830         the stack.
8831
8832 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8833
8834         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8835
8836         * aot-compiler.c (emit_plt): Fix a warning.
8837         
8838         * aot-compiler.c: Implement ARM support in the binary writer.
8839
8840 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8841
8842         * basic-simd.cs: Add test for getter with byref arg.
8843         Fix the naming of a few tests.
8844         Add missing checks to a test.
8845
8846 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8849
8850         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8851         most of the full-aot support for monitor enter/exit trampolines.
8852
8853         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8854         enter/exit trampoline creation functions.
8855
8856         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8857         make dist.
8858
8859 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8860
8861         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8862         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8863         implement the needed functionality without adding crap to the runtime.
8864
8865 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8868         non-x86 builds.
8869
8870         * mini.c (mono_build_date): New global version holding the build date in
8871         string format.
8872         
8873         * Makefile.am (buildver.c): Generate a file containing the build date.
8874
8875         * main.c: Set the build date from the generated file.
8876
8877         * mini.c (mono_get_runtime_build_info): New helper function returning build
8878         information in a string format.
8879         
8880         * driver.c (mono_main): Print the build date in --version.
8881
8882         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8883         file when the bind-to-runtime-version option is used.
8884
8885 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8886
8887         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8888
8889 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8890
8891         * simd-methods.h: Rename prefetch methods.
8892
8893         * simd-intrinsics.c: Same.      
8894
8895 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8896
8897         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8898         sizes.
8899
8900 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * aot-compiler.c: Use the bundled elf header files instead of depending on
8903         the system one.
8904         
8905         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8906         mempool.
8907
8908         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8909         on every call.
8910
8911 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8912
8913         * cpu-x86.md: Add store nta ops.
8914
8915         * mini-ops.h: Same.
8916
8917         * mini-x86.c: Same.
8918
8919         * mini.h: Add an enum for simd prefetch modes.
8920
8921         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8922         of store. Use the changed code to support store nta.
8923
8924         * simd-intrinsics.c: Add prefetch ops for all vector types.
8925
8926 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8929         threads.
8930         
8931         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8932         names.
8933
8934         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8935         trampolines.
8936
8937 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8938
8939         * mini-x86.c: Fixed commit.
8940
8941 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8944
8945 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8946
8947         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8948         and MONITOR_EXIT, for the ASM fastpaths.
8949
8950         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8951         available.
8952
8953         * mini.c, patch-info.h: Signature and patch infos for
8954         Monitor.Enter/Exit trampolines.
8955
8956         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8957
8958         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8959         Monitor.Enter/Exit ASM fastpath for Linux.
8960
8961 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8964
8965         * objects.cs: Add a new test.
8966         
8967         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8968
8969         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8970         if MONO_LOG_LEVEL is set.
8971
8972         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8973
8974         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8975
8976         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8977         
8978         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8979         of file offsets. Align the sections belonging to the data segment to 
8980         PAGESIZE.
8981
8982 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8983
8984         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8985         elf.h. Port it to amd64.
8986
8987 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8988
8989         * driver.c: Enable SIMD by default.
8990
8991 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8992
8993         * cpu-x86.md: Add prefetch op.
8994
8995         * mini-ops.h: Same.
8996
8997         * mini-x86.c: Same.
8998
8999         * mini.h: Add an enum for simd prefetch modes.
9000
9001         * simd-methods.h: Add prefetch function names.
9002
9003         * simd-intrinsics.c: Add prefetch ops for all vector types.
9004
9005 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * aot-compiler.c (emit_bytes): Speed this up a little.
9008
9009 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9010
9011         * aot-compiler.c: Add JIT time etc. statistics.
9012         
9013         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9014
9015         * mini.h (MonoCompile): Add 'got_offset' field.
9016
9017         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9018         method_got_offsets array.
9019
9020         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9021         wrappers.
9022
9023         * aot-compiler.c (compile_method): Add generic method instances referenced
9024         by the method to the list of methods to be compiled, this is required so if
9025         A<T> references B<T>, and another assembly references A<int>, then it will
9026         also get a copy of B<int>.
9027
9028         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9029         when checking for monitor enter/exit.
9030
9031 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9032
9033         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9034         for Monitor.Enter and Monitor.Exit if enabled.
9035
9036         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9037         Solaris.
9038
9039 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9040
9041         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9042         of an OP_MOVE. Fixes #440046.
9043
9044         * basic-long.cs: Add a new test.
9045
9046 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9047
9048         * mini.h: Add synchronization note for the managed counter-part.
9049
9050         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9051         returns the simd caps of the current cpu.
9052
9053 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9054
9055         * basic-simd.cs: Remove Console.WriteLine.
9056
9057 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * basic-simd.cs: New tests for Vector2ul.
9060
9061 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * simd-intrinsics.c: Add new vector type Vector2ul.
9064
9065 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * basic-simd.cs: New tests for Vector2l.
9068
9069 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9070
9071         * cpu-x86.md: Add long version of most packed int ops.
9072
9073         * mini-ops.h: Same.
9074
9075         * mini-x86.h: Same.
9076
9077         * simd-intrinsics.c: Add new vector type Vector2l.
9078
9079 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9080
9081         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9082
9083         * simd-methods.h: Remove SN_op_BitwiseXor.
9084
9085 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9086
9087         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9088         alignment.
9089
9090 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * basic-simd.cs: Test for Vector2d.
9093
9094         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9095         value.
9096
9097 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * cpu-x86.md: Add double version of all packed float ops.
9100
9101         * mini-ops.h: Same.
9102
9103         * mini-x86.h: Same.
9104
9105         * simd-intrinsics.c: Add new vector type Vector2d.
9106
9107         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9108
9109         * simd-methods.h: Add Duplicate.
9110
9111 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9112
9113         * basic-simd.cs: Test for packing with signed saturation.
9114
9115 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9116
9117         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9118         found in the TYPESPEC table.
9119
9120 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9123         too.
9124
9125         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9126
9127         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9128         instead of the RVA, since the RVA can be changed by tools like the cil 
9129         stripper.
9130
9131         * method-to-ir.c (mono_method_to_ir2): Ditto.
9132
9133         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9134         (deserialize_variable): Ditto.
9135
9136 2008-10-25  Martin Baulig  <martin@ximian.com>
9137
9138         * debug-mini.c (write_variable): Use
9139         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9140
9141 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9142
9143         * cpu-x86.md: Add unsigned variants of packd and packw.
9144
9145         * mini-ops.h: Same.
9146
9147         * mini-x86.h: Emit the right instruction for packd and packw.
9148         Add unsigned variants of packd and packw.
9149
9150         * simd-intrinsics.c: Packd and packw were used in place of their
9151         unsigned variants. Change that.
9152         Add intrinsics for (Signed)PackWithSignedSaturation.
9153
9154         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9155
9156 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9157
9158         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9159
9160 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9161
9162         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9163
9164         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9165
9166         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9167         sse instructions.
9168
9169         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9170
9171 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9172
9173         * method-to-ir.c, mini.c: Special casing for the synchronized
9174         wrapper for the ldtoken+GetTypeFromHandle case.
9175
9176 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9179
9180         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9181         created/split bblocks.
9182
9183 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9184
9185         * mini-ops.h: Add packed signed mul high.
9186         
9187         * cpu-x86.md: Same.
9188
9189         * mini-x86.c (mono_arch_output_basic_block): Same.
9190
9191         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9192
9193         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9194
9195 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9196
9197         * basic-simd.cs: Tests for Vector16sb.
9198
9199 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9200
9201         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9202
9203 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9204
9205         * mini-ops.h: Add packed signed min, max and compare greater.
9206         
9207         * cpu-x86.md: Same.
9208
9209         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9210         saturation.
9211
9212         * simd-methods.h: Add CompareGreaterThan.
9213
9214         * simd-methods.h: Remove CompareEquals.
9215
9216         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9217
9218         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9219
9220         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9221         CompareEqual.
9222
9223 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9224
9225         * basic-simd.cs: Fix tests due to change in the API.
9226
9227 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9230
9231 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9232
9233         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9234
9235         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9236         inst_offset as this has invalid values for LDADDR.
9237
9238 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9239
9240         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9241
9242         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9243
9244 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9247         for accessing field->data.
9248
9249 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9252
9253 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9254
9255         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9256
9257         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9258
9259 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9262         from the cfg mempool.
9263
9264 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9265
9266         * basic-simd.cs: Tests for new methods in Vector8us.
9267
9268 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9269
9270         * mini-ops.h: Add multiply and store high.
9271         
9272         * cpu-x86.md: Same.
9273
9274         * mini-x86.c (mono_arch_output_basic_block): Same.
9275
9276         * simd-methods.h: Same.
9277
9278         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9279         and CompareEqual.
9280
9281 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9284         mono_class_setup_vtable ().
9285
9286         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9287         mono_class_get_vtable_entry () for accessing klass->vtable.
9288
9289         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9290
9291         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9292         found.
9293
9294         * method-to-ir.c (mono_save_token_info): Don't save references made from
9295         wrappers.
9296
9297         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9298         of generic instances.
9299
9300         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9301
9302 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9303
9304         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9305         OP_JMP depends on the method signature.  Calculate it properly.
9306
9307 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9308         
9309         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9310         called directly.
9311
9312         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9313         instances.
9314         (emit_extra_methods): Add another table mapping method indexes to 
9315         offsets in the extra_method_info table.
9316
9317         * mini.h: Bump AOT file format version.
9318         
9319         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9320         and mono_aot_get_method_from_token () into one function.
9321
9322 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9323
9324         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9325         separate counter.
9326
9327 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9328
9329         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9330         methods.
9331
9332         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9333         disable_aot.
9334
9335         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9336
9337         * mini.h: Bump aot file format version.
9338
9339         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9340         AOT file can contain native code for methods which are not in the METHOD
9341         table. Generate code for non-sharable generic instances of generic methods
9342         found in the METHODSPEC table.
9343         
9344         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9345         encoding generic type handles.
9346
9347         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9348         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9349
9350         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9351         macros + MONO_ADD_INS.
9352
9353         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9354         context as well.
9355
9356         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9357
9358         * mini.h: Bump aot file format version.
9359
9360         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9361
9362 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9363
9364         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9365         platforms, with definable stack alignment value.  Set to 16 now
9366         for all platforms.
9367
9368         * mini.c, mini.h, driver.c: Command line option for disabling
9369         stack alignment.
9370
9371 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9372
9373         * basic-simd.cs: Tests for new methods in Vector4ui.
9374
9375 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9376
9377         * mini-ops.h: Add packed int shuffle.
9378         
9379         * cpu-x86.md: Same.
9380
9381         * mini-x86.c (mono_arch_output_basic_block): Same.
9382
9383         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9384         extract mask, max, min, shuffle.
9385
9386         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9387
9388 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9389
9390         * basic-simd.cs: Tests for new methods in Vector8us.
9391
9392 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9393
9394         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9395         RuntimeTypeHandle, not a TypedReference.
9396
9397 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9398
9399         * simd-intrinsics.c: remove relocations.
9400
9401 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9402
9403         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9404         optimizations from the x86 backend.
9405
9406 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9407
9408         * simd-methods.h, simd-intrinsics.c: debloat method names and
9409         prepare for no relocations.
9410
9411 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9414         
9415         * cpu-x86.md: Same.
9416
9417         * mini-x86.c (mono_arch_output_basic_block): Same.
9418
9419         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9420         extract mask, max, min and sum of absolute differences.
9421
9422         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9423         method name.
9424
9425 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9426
9427         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9428         Renamed one test for consistency.
9429
9430 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9431
9432         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9433         fix to the code that deal with other blocks.
9434
9435 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9436
9437         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9438
9439 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9442         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9443         able to process the source reg.
9444
9445 2008-10-16  Martin Baulig  <martin@ximian.com>
9446
9447         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9448
9449         * inssel.brg: Add `OP_HARD_NOP'.
9450
9451         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9452
9453         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9454         `OP_HARD_NOP' instruction when running inside the debugger.
9455
9456         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9457         `OP_HARD_NOP' instruction when running inside the debugger.
9458
9459 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9460
9461         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9462         now works. The issue with the regalloc tripping up no longer
9463         happens.
9464
9465         * simd-intrinsics.c (load_simd_vreg): Same.
9466
9467 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9468         
9469         * basic-simd.cs: Tests for new Vector8ui methods.
9470
9471 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9472
9473         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9474         only for type. This fixes crashes where MonoInst::klass is checked
9475         for ops of type != VTYPE or OBJ.
9476
9477         * simd-intrinsics.c (load_simd_vreg): Same.
9478
9479 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * mini-ops.h: Add ops for packed shuffle/max/avg and
9482         extract mask.
9483         
9484         * cpu-x86.md: Same.
9485
9486         * mini-x86.c (mono_arch_output_basic_block): Same.
9487
9488         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9489         extract mask.
9490
9491         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9492         to emit extract mask op.
9493
9494         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9495         to emit word shuffles.
9496
9497 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9498
9499         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9500         the largest alignment needed by a variable, but at least
9501         sizeof(gpointer).
9502
9503 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9504
9505         * basic-simd.cs: Tests for the fixes in the last commit.
9506
9507 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9508
9509         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9510         no longer handles STACK_PTR input.
9511
9512         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9513
9514         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9515         get_simd_vreg   but handles STACK_PTR input.
9516
9517         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9518         as the input can be an arbitrary pointer.
9519
9520         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9521         LDADDR local optimization directly otherwise use a store op.
9522
9523 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9524
9525         * basic-simd.cs: Tests for dup low and dup high.
9526
9527 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9528
9529         * mini-ops.h: Add dup low and dup high ops.
9530         
9531         * cpu-x86.md: Same.
9532
9533         * mini-x86.c (mono_arch_output_basic_block): Same.
9534
9535         * simd-intrinsics.c (vector4f_intrinsics): Same.
9536
9537 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * basic-simd.cs: Tests for recently added functionality.
9540
9541 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9542
9543         * mini-ops.h: Add remaining sse1 fp ops.
9544         
9545         * cpu-x86.md: Add remaining sse1 fp ops.
9546
9547         * mini-x86.c (mono_arch_output_basic_block): Same.
9548
9549         * mini.h: Add enum for simd FP compare conditions.
9550
9551         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9552
9553         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9554         so the backed can generate the appropriate op.
9555
9556 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9557         This patch squeese one more byte from the SimdIntrinsc struct.
9558
9559         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9560         a a shift amount intead of simply or'ing it.
9561
9562         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9563
9564         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9565         byte so we can have an aditional flags field without increasing struct size.
9566
9567         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9568         against the simd_supported_versions bitmask.
9569
9570         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9571
9572 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9573
9574         * mini.c: remove rawbuffer code (the only use here is unsafe because
9575         it takes locks during signal handling and the kernel now provides much
9576         better info in proc/pid/smaps these days).
9577
9578 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9581         OP_X86_PUSH_OBJ. Fixes #434620.
9582
9583         * objects.cs: Add a test.
9584         
9585 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9586
9587         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9588         that the packuswb/packusdw don't work with unsigned numbers for what
9589         would be negative numbers in signed format.
9590
9591         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9592         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9593
9594         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9595
9596         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9597
9598         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9599
9600         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9601
9602         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9603         add more ops.
9604
9605         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9606         version as the enum in mini.h.
9607
9608         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9609         for sse3 ops, check the simd_version field if present. This way the code
9610         works with all versions of sse.
9611
9612 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9613
9614         * simd-intrinsics.c: Fixed intrinsic name typo.
9615
9616         * mini.h: Added missing simd exported function.
9617
9618         * basic-simd.cs: Added tests for Vector4ui.
9619         Fixed broken test for Vector16b.
9620
9621 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9624         the max length to 64.
9625
9626 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9627
9628         * method-to-ir.c: Only do the fast virtual generic method call for
9629         non-wrapper methods.
9630
9631         * mini.h, mini-trampolines.c: The new generic virtual remoting
9632         trampoline handles virtual method calls via the vtable (as done by
9633         the fast virtual generic method calls) to remoting proxies.
9634
9635         * mini.c (mono_jit_create_remoting_trampoline): For generic
9636         methods reate a generic virtual remoting trampoline.
9637
9638         * mini-amd64.h: Enable fast virtual generic method calls again.
9639
9640 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9641
9642         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9643         restore registers when doing tail calls.
9644
9645 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9646
9647         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9648         Vector4ui.
9649
9650 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9651
9652         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9653
9654 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9655
9656         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9657
9658 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9659
9660         * basic-simd.cs: Retrofit for API changes.
9661
9662 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9663
9664         * mini-ppc.c: Handle integer stack arguments for tail calls.
9665
9666 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9667
9668         * optflags-def.h: Removed sse3 optimization.
9669
9670         * driver.c: Same.
9671
9672         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9673         sse3.
9674
9675         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9676
9677         * mini.h: Added enumeration with simd versions.
9678
9679         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9680         for detecting SSE3.
9681
9682         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9683
9684         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9685
9686 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9689
9690         * basic-simd.cs: Fixed test naming.
9691
9692 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9693
9694         * mini-ops.h: Added ops for packed and saturated math, shifts
9695         and packing/unpacking.
9696
9697         * cpu-x86.md: Added descriptors for the above ops.
9698
9699         * mini-x86.c: Added code to emmit the above ops.
9700
9701         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9702
9703 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * aot-compiler.c (compile_method): Enable AOT for generic code.
9706
9707         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9708
9709 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9710
9711         * mini.c: add a workaround for a common screwup that ends up blamed
9712         to mono (other processes blocking signal delivery).
9713
9714 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9717         in the LDFLD/STFLD opcodes. Fixes #432673.
9718
9719         * iltests.il.in: Add a new test.
9720
9721 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9722
9723         * mini-arm.c: attach the thread in unmanaged->managed transitions
9724         using delegates (bug #433148).
9725
9726 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9727
9728        * basic-simd.cs: Use new ShuffleSel constants.
9729
9730 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9731
9732         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9733
9734         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9735         only disable simd intrinsics if no sse2 is detected.
9736
9737         * optflags-def.h: Added sse3.
9738
9739         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9740         is disabled.
9741
9742 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9743
9744         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9745         when adding delegate-invoke wrappers.
9746
9747 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9748
9749         * Makefile.am: Reenable the simd tests.
9750
9751 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9752
9753         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9754           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9755           other vreg is allocated to that hreg.
9756
9757         Contributed under MIT/X11 license.
9758
9759 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9760
9761         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9762         yet checked in.
9763
9764 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * basic-simd.cs: New test suite for SIMD intrinsics.
9767
9768         * Makefile.am: Added new tests.
9769
9770 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9771
9772         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9773
9774         * mini-ops.h: Same.
9775
9776         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9777
9778         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9779         using SSE2 aware opcodes.
9780
9781         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9782         is enabled, this code path is only reachable if conversion ops are emmited after
9783         mono_method_to_ir.
9784
9785         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9786
9787         This optimization saves 6 bytes per conversion against the old version.
9788
9789 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * aot-compiler.c (compile_method): Don't skip methods referencing 
9792         generic methods without a corresponding entry in token_info_hash, since
9793         encode_method_ref () can handle all generic methods now.
9794
9795         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9796         generic context is set.
9797         
9798         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9799         generic sharing of LDTOKEN.
9800
9801 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9802
9803         * mini-amd64.h: Temporarily disabled fast virtual generic method
9804         calls because it breaks the System.Runtime.Remoting tests.
9805
9806 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9809
9810         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9811         so inlining actually works.
9812         (check_inline_caller_method_name_limit): Ditto.
9813
9814 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9815
9816         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9817         64 bit safety (from Olaf Hering and Andreas Farber).
9818
9819 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9820         
9821         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9822         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9823         unused virtual call support code.
9824
9825         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9826         
9827         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9828         which can't use aot trampolines.
9829         (decode_patch): Don't create aot trampolines for methods which can't use
9830         them.
9831
9832         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9833         use aot trampolines.
9834
9835         * mini.h: Bump AOT image format version.
9836         
9837 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9840         to save_token_info () since cmethod is inflated for constrained calls.
9841
9842         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9843
9844 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9845
9846         * Makefile.am: Add build rules for ppc64.
9847         This avoids the build failing at pedump with unresolved symbols
9848         due to lack of arch_sources. Instead it will now fail earlier
9849         due to lack of cpu-ppc64.md.
9850
9851         Contributed under MIT/X11 license.
9852
9853 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9854
9855         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9856         tail calls.
9857
9858         * iltests.il.in: Add test case for tail call with many arguments.
9859
9860 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9861
9862         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9863         to the fast virtual generic method code until the aot case is fixed.
9864
9865 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9866
9867         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9868
9869 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9870
9871         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9872         thunks.
9873
9874 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9875         
9876         * simd-intrinsics.c: Forgot to add this one.
9877
9878         * mini-codegen.c: Fix macro in case SIMD is not supported.
9879
9880 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9881         
9882         This patch land initial JIT support for simd intrinsics.
9883
9884         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9885
9886         * Makefile.am: Added simd-intrinsics.c
9887
9888         * simd-intrinsics.c: New file with simd instrinsic related
9889         code.
9890
9891         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9892
9893         * cpu-x86.md: Add simd related instructions.
9894
9895         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9896
9897         * driver.c: Added two new --regression variants.
9898
9899         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9900
9901         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9902
9903         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9904         extract some complicated logic to helper functions.
9905
9906         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9907
9908         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9909
9910         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9911         the specialized simplification pass.
9912
9913         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9914
9915         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9916
9917         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9918         table.
9919
9920         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9921         if MONO_ARCH_NEED_SIMD_BANK is defined.
9922
9923         * mini-ops.h: Added the new simd ops.
9924
9925         * mini-x86.c: Added mono_arch_xregname.
9926
9927         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9928
9929         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9930
9931         * mini-x86.h: Define simd related MONO_ARCH macros.
9932
9933         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9934
9935         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9936
9937         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9938         MONO_CLASS_IS_SIMD to deal with simd related IR.
9939
9940         * mini.h (MonoInst): Added spill_var to the backend union.
9941
9942         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9943
9944         * mini.h: Added forward declarations of the new simd fuctions.
9945
9946         * optflags-def.h: Added new optimization names SIMD.
9947
9948         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9949
9950         * regalloc.h: Added support for working with 3 register banks.
9951
9952         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9953
9954         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9955
9956 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9957
9958         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9959
9960 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9963         instead of one on 64 bit systems.
9964
9965         * method-to-ir.c: Remove unused includes.
9966
9967 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9968
9969         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9970         cfg->used_int_regs, since the two are different on arm.
9971
9972 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9973
9974         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9975         mono_method_get_vtable_index() to get the vtable index.
9976
9977 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9978
9979         * method-to-ir.c (mono_method_to_ir2): Don't create native
9980         wrappers for array methods, because they're never called (and if
9981         they were called they wouldn't work).
9982
9983 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9984
9985         * method-to-ir.c (mono_method_to_ir2): Array methods are
9986         special-cased and must not be invoked indirectly via the (M)RGCTX
9987         when generic sharing is turned on.  Fixes #431413.
9988
9989 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9990
9991         * method-to-ir.c: When generic sharing is active, call
9992         non-interface virtual generic methods via the standard trampoline.
9993
9994         * mini-trampolines.c: Handle virtual generic shared methods.
9995
9996         * mini.h, mini-x86.c, mini-x86.h: New argument for
9997         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9998         method thunks and which is the trampoline to call if the lookup
9999         fails.  Enable the virtual generic method thunk for x86.
10000
10001         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10002         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10003         argument but assert that it's NULL, because these archs don't yet
10004         implement the virtual generic method thunk.  Changes in the IMT
10005         thunk data structures.
10006
10007 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10008
10009         * aot-compiler.c (emit_globals): Avoid invalid characters in
10010         the static linking symbol.
10011
10012         * objects.cs: Add a test for the range check optimization. Fix warnings.
10013
10014         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10015         optimization from the current JIT.
10016
10017         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10018         later in decompose_array_access_opts () to allow more optimizations.
10019
10020         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10021         mono_decompose_soft_float () for consistency.
10022
10023         * mini-ops.h: Fix arguments of OP_STRLEN.
10024
10025         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10026         into a separate function.
10027         (reset_cast_details): Ditto.
10028         (handle_unbox): Save cast details. Fixes #431254.
10029
10030         * method-to-ir.c: Remove some obsolete FIXMEs.
10031
10032 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10033
10034         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10035
10036 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10037
10038         * mini-codegen.c: More work on macros to make them
10039         ready for multiple regbanks.
10040
10041 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10042
10043         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10044
10045         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10046
10047 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10048
10049         * mini-codegen.c (mono_spillvar_offset): Proper support for
10050         multiple regbanks.
10051
10052 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10055         the stack overflow changes.
10056
10057 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10058
10059         * mini-codegen.c: Make all bank macros depend on reg_bank.
10060
10061         * mini-codegen.c (mono_local_regalloc): Make free mask
10062         initialization regbank aware.
10063
10064 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10065
10066         * mini-codegen.c (mono_local_regalloc): Extract callee
10067         mask selection to a function and make it regbank aware.
10068
10069 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10070
10071         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10072         code to deal with many regbanks.
10073
10074 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * mini-codegen.c: More fp->regbank changes.
10077
10078 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10079
10080         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10081         of a hardcoded constant.
10082
10083 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10084
10085         * method-to-ir.c (type_from_stack_type): Fix typo.
10086
10087 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * mini-ia64.c (emit_move_return_value): Convert float return values to
10090         double.
10091
10092         * objects.cs: Add a new test.
10093         
10094         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10095         VARARG methods to fix an assert later.
10096
10097         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10098         end so it at least compiles.
10099
10100 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10103
10104 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10105
10106         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10107         optimization to a new function (emit_optimized_ldloca_ir) and enable
10108         it for both ldloca and ldloca_s.
10109
10110 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10111
10112         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10113         gshared CASTCLASS code.
10114
10115         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10116         amd64, where the libc stack unwinder encounters stack frames referring to
10117         native code in unmapped memory.
10118
10119         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10120         sharing.
10121
10122         * generics.cs: Add new test.
10123
10124 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10125
10126         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10127         add a check that one of the ARM_FPU_ constants is defined.
10128
10129         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10130         
10131         * mini-exceptions.c: Fix build on non-altstack platforms.
10132
10133         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10134         sharing of vtypes.
10135
10136         * ir-emit.h: Add a comment to NEW_PCONST.
10137
10138         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10139
10140         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10141
10142         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10143         after the changes to MonoJitDomainInfo.
10144
10145 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10146
10147         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10148
10149 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10150
10151         * mini-ppc.c: Compiler warning fixes.
10152
10153 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10154
10155         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10156         for pinvokes.
10157
10158 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10159
10160         * exceptions-ppc.c, mini-ppc.h: Compile
10161         mono_arch_handle_altstack_exception() on Darwin, too.
10162
10163 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10164
10165         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10166         work on archs which don't have generic sharing implemented, only
10167         without the vtable_arg.
10168
10169 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10170
10171         * mini.c: Added comment explaining why delegate ctor icall
10172         wrappers are compiled.
10173
10174 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10175
10176         * mini.c: Don't produce trampolines to delegate ctor icall
10177         wrappers but compile them upfront.
10178
10179 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10180
10181         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10182         runtime-set function when going back to managed code. Currently this
10183         is used to set back the protection on the soft ovf pages and/or to
10184         throw the stack overflow exception that happened in unmanaged code.
10185
10186 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10187
10188         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10189         runtime-set function when going back to managed code. Currently this
10190         is used to set back the protection on the soft ovf pages and/or to
10191         throw the stack overflow exception that happened in unmanaged code.
10192
10193 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10194
10195         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10196         the support code for restoring stack protection after stack overflows
10197         that happen in unmanaged code. Don't set the exec permission on the
10198         soft overflow area.
10199
10200 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10201
10202         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10203         delegate->method_ptr is set. Fixes #428054.
10204
10205 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * tests.cs: Rename to ratests.cs.
10208
10209         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10210         emit_get_rgctx_... functions.
10211
10212 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10213
10214         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10215
10216 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10217
10218         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10219         before asserting that method is sharable.
10220
10221 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10222
10223         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10224         whether method needs a static RGCTX wrapper used instead of
10225         complex conditions.
10226
10227         * generic-sharing.c, mini.h: A few functions moved to
10228         metadata/generic-sharing.c.
10229
10230 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10231
10232         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10233         Generic code sharing for value types, which essentially means
10234         treating value type methods like static methods.  The RGCTX is
10235         passed in the same way.
10236
10237 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10238
10239         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10240         opcode when creating multi-dimensional arrays of open types.
10241
10242         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10243         open generic types.
10244
10245         * generics.cs: Add a test.
10246
10247         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10248
10249 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10250
10251         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10252
10253         * mini.c (mini_method_compile): Set it when running under the debugger. 
10254
10255         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10256         vreg optimization if the flag is set.
10257
10258         * driver.c (mono_main): Add --attach= option to pass options to
10259         the attach agent.
10260
10261         * mini.c (sigquit_signal_handler): Start the attach agent.
10262
10263         * ssapre.c: Disable this to save space since it is not yet ported to
10264         linear IR.
10265
10266         * regalloc2.c: Disable this to save space.
10267
10268         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10269
10270 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10271
10272         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10273         the -v option useful again.
10274
10275 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10276
10277         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10278         --break-at-bb.
10279
10280         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10281         arrays of arrays. Fixes #428406.
10282
10283         * method-to-ir.c (mini_emit_castclass): Ditto.
10284
10285         * objects.cs: Add new test.
10286         
10287 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10288
10289         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10290         was wrong at it choked against target_type_is_incompatible for byref types.
10291
10292 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10293
10294         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10295         places.
10296
10297 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10298
10299         * mini-exceptions.c: update a few more exceptions-related counters.
10300
10301 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10302
10303         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10304         new functions to allocate from persistent mempools.
10305
10306 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10307
10308         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10309         multiple register banks in the future.
10310
10311         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10312
10313 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10314
10315         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10316
10317         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10318
10319         * mini.h: Export type_to_eval_stack_type.
10320
10321         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10322         is only ins->klass of byref types.
10323
10324 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10325
10326         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10327         (mini_emit_memcpy2): Ditto.
10328
10329         * mini-amd64.c: Fix a warning.
10330
10331 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10332
10333         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10334         linking.
10335
10336 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10337
10338         * method-to-ir.c: Extract stloc micro-optimization to a
10339         function and apply it to all cases.
10340
10341 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10342
10343         * method-to-ir.c: Don't fail generic code sharing in cases we
10344         already support.
10345
10346 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10347
10348         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10349
10350 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10351
10352         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10353         implementation.
10354
10355 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10356
10357         * trace.c: make tracing more useful and correct, with per-thread
10358         id and indent info.
10359
10360 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10361
10362         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10363         doing a method call and the argument is an R4.
10364
10365 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10368         generic methods.
10369
10370 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10371
10372         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10373
10374 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10375
10376         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10377         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10378
10379 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * driver.c: Add a --agent argument (not supported yet) to load managed
10382         agent assemblies before loading the main assembly, similarly to how the
10383         Java VM handles agents.
10384
10385 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10386
10387         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10388         function to do stack layout of local variables.
10389
10390 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10391
10392         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10393         calculation.
10394
10395 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10396
10397         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10398         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10399         JIT if DISABLE_JIT is defined.
10400
10401         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10402         defined.
10403
10404 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10405
10406         * iltests.il.in: Disable the fconv test on PPC (the result is
10407         undefined according to ECMA).
10408
10409 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10410
10411         * iltests.il.in: Enable tail call tests for PPC.
10412
10413         * mini.h: Add variable for storing incoming valuetype argument
10414         addresses for tail calls.
10415
10416         * mini-ppc.c: Implement valuetype arguments and return values for
10417         tailcalls on Linux.
10418
10419 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10420
10421         * mini-ppc.c: Partially implement tail calls (struct arguments and
10422         return values not supported).
10423
10424         * method-to-ir.c: Enable tail calls on PPC.
10425
10426 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10427
10428         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10429         runtime-invoke wrappers to work around the problem of them getting
10430         assigned to a random class.
10431
10432         * aot-runtime.c (mono_aot_get_method): Ditto.
10433         
10434 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10437         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10438
10439 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10440
10441         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10442         until they're implemented properly.
10443
10444         * exceptions-ppc.c: Use arch-independent exception-handling code
10445         instead of custom one.
10446
10447         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10448         for Linear IR.
10449
10450         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10451
10452         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10453         applies when __powerpc__ is defined.
10454
10455 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10456
10457         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10458         methods to their code to avoid computing the full name of wrappers and
10459         doing a lookup in a string hash table.
10460
10461 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10464         we identify bblocks before method_to_ir () is ran.
10465
10466         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10467         Also avoid optimizing branches pointing to themselves.
10468
10469         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10470
10471 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10472
10473         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10474
10475 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10478         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10479         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10480         'buf'.
10481
10482         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10483         jumped to the same entry in plt_jump_table.
10484
10485 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10486
10487         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10488         dynamic images.
10489
10490 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10491
10492         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10493         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10494         #421807.
10495
10496 2008-08-29  Geoff Norton  <gnorton@novell.com>
10497
10498         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10499         segment, and doesn't properly handle .space as .text.  Fixes
10500         AOT Mach/ARM
10501
10502 2008-08-29  Geoff Norton  <gnorton@novell.com>
10503
10504         * mini.c: Disable the mach exception handler when running on 
10505         ARM
10506
10507 2008-08-29  Geoff Norton  <gnorton@novell.com>
10508
10509         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10510         globals on Darwin/ARM
10511
10512 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10515         since too many things depend on it. Instead, call 
10516         mono_runtime_set_no_exec ().
10517         
10518         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10519         the new JIT.
10520
10521         * aot-compiler.c: Add an 'asm-only' AOT option.
10522
10523         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10524                 
10525         * aot-compiler.c (compile_method): Disable gshared support for now as it
10526         doesn't yet work.
10527
10528 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10529
10530         * mini-amd64.h : Fix a compiler warning.
10531
10532         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10533           Changed to use a callback function to retrieve the unwind info.
10534           This avoids problems observed when code blocks were removed by
10535           unloading an app domain.
10536
10537         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10538           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10539           to work properly.
10540
10541         Contributed under MIT/X11 license.
10542
10543 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10544
10545         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10546           case to keep the stack aligned to 8.
10547
10548         Contributed under MIT/X11 license.
10549
10550 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10553         avoid repeated linear searches.
10554
10555 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10556
10557         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10558         methods it can't handle.
10559         
10560         * aot-compiler.c (add_method): Avoid adding a method twice.
10561         (add_wrappers): Add runtime invoke wrappers for all methods.
10562
10563         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10564         function to create an aot-compatible version of this trampoline.
10565
10566         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10567
10568 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10569
10570         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10571
10572         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10573         with a generic sharing failure.
10574
10575         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10576
10577         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10578         CEE_RETHROW. Fixes #419634.
10579
10580         * mini.c (mono_method_to_ir): Ditto.
10581
10582         * exceptions.cs: Add a new test.
10583         
10584         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10585         to mono_type_stack_size_internal () since some callers might not pass in
10586         an rgctx.
10587
10588         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10589         instrument_prolog. Fixes #419878.
10590
10591         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10592         doubles in soft float mode volatile.
10593
10594 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10597
10598         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10599         to handle soft float correctly.
10600
10601         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10602         the fast path.
10603
10604         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10605
10606         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10607         to sp, since the generics catch code requires it.
10608
10609         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10610         copying.
10611
10612         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10613         mono_arch_emit_imt_argument ().
10614
10615         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10616
10617         * mini-arm.c tramp-arm.c: Generic sharing updates.
10618
10619 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * mini-arm.c: Fix the arm build.
10622
10623         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10624         handling enums, generic instances and generic sharing.
10625         (mini_type_stack_size_full): Ditto.
10626
10627         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10628         
10629         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10630
10631         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10632
10633         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10634         trampolines.
10635
10636         * mini-arm.c: Various small generic sharing changes.
10637
10638         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10639         this for x86.
10640         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10641         custom code.
10642
10643         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10644         helper function to return a generic class init trampoline.
10645
10646         * method-to-ir.c mini.c: Use it.
10647         
10648         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10649         arch-specfic function to return a generic class init trampoline.
10650
10651         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10652         the GENERIC_CLASS_INIT custom code.
10653
10654         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10655         a fatal error, not a sharing failure.
10656
10657         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10658         needed.
10659
10660         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10661         trampoline argument from MONO_ARCH_VTABLE_REG.
10662
10663         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10664         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10665         argument, and pass the vtable in VTABLE_REG.
10666
10667         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10668         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10669         argument, and pass the vtable in VTABLE_REG.
10670         (mono_arch_create_trampoline_code_full): Remove some special casing for
10671         the rgctx fetch trampoline.
10672
10673         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10674         Fixes #419273.
10675
10676         * iltests.il: Add a test for it.
10677
10678 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10681
10682         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10683         no longer needed.
10684
10685         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10686         use mono_jit_info_table_find () to avoid recursion.
10687         (mono_delegate_trampoline): Add a sync wrapper here.
10688
10689         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10690         here.
10691
10692         * mini.c (mono_method_to_ir): Ditto.
10693         
10694         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10695         add_sync_wrapper argument. Don't add a sync wrapper here.
10696         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10697
10698         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10699         
10700 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10701
10702         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10703           of nonvolatile registers back from MonoContext to CONTEXT.
10704
10705         Contributed under MIT/X11 license.
10706
10707 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10708
10709         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10710           arguments on Winx64 there are only 4 argument registers.  For this
10711           logic to work the last argument must be pulled from the stack.  
10712
10713         Contributed under MIT/X11 license.
10714
10715 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10716
10717         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10718
10719         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10720         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10721         encode/decode_method_ref ().
10722
10723         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10724
10725         * aot-runtime.c (decode_patch): Ditto.  
10726
10727         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10728         MONO_PATCH_INFO_METHOD.
10729
10730         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10731         MonoGenericJitInfo.
10732
10733         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10734         MonoGenericJitInfo.
10735
10736         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10737
10738         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10739         one from the caller.
10740
10741         * aot-runtime.c (decode_generic_inst): New function to decode and
10742         return a interned generic inst.
10743         (decode_klass_ref): Use it.
10744         (decode_method_ref): Ditto.
10745
10746         * aot-compiler.c (emit_exception_debug_info): Save 
10747         jinfo->has_generic_jit_info too.
10748
10749 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10750
10751         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10752
10753         * iltests.il.in: Add a test for fconv_to_i.
10754
10755         * liveness.c: Disable the liveness2 pass for now to save space.
10756
10757         * regalloc2.c: Include mempool-internals.h to fix warnings.
10758
10759         * aot-compiler.c (encode_method_ref): Encode the context of generic
10760         instance methods.
10761
10762         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10763         the context saved in the aot file.
10764
10765         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10766
10767         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10768
10769         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10770         volatile so they won't be optimized away.
10771
10772 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10773
10774         * ssa.c:
10775         * ssa2.c:
10776         * mini.c:
10777         * regalloc2.c:
10778         * dominators.c: Remove duplicated functions that now are in
10779         mempool-internals.h.
10780
10781 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * aot-compiler.c: Fix warnings.
10784
10785         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10786
10787         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10788
10789         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10790         as the patch type.
10791
10792         * mini.c (mono_resolve_patch_target): Ditto.
10793         
10794         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10795         (encode_klass_ref): Add support for encoding VARs/MVARs.
10796
10797         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10798
10799         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10800         the handling of the got entries into a separate 'decode_got_entry' function.
10801         Add support for RGCTX_FETCH.
10802
10803         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10804         clobbered by the trampoline code.
10805
10806         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10807         not clobbered by the indirect calling code.
10808
10809 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10812         to fix the build.
10813
10814 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10815
10816         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10817         signature using the compilation mempool otherwise we would leak it.
10818
10819 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10820
10821         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10822         mono_emit_abs_call ().
10823
10824         * patch-info.h: Add GENERIC_CLASS_INIT.
10825
10826         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10827
10828         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10829         as their target as a near call.
10830
10831         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10832         ABS handling code.
10833         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10834
10835         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10836         call to a runtime function described by a patch.
10837
10838         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10839         mono_emit_abs_call, this has the advantage that the ABS handling code in
10840         mono_codegen () can handle them both, and can handle other stuff in the
10841         future without additional code.
10842
10843         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10844         entry.
10845         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10846         abs addresses.
10847
10848         * mini.h: Add missing bblock related prototypes.
10849
10850         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10851         reverse_inst_list_len fields.
10852
10853         * mini.c: Refactor this file a bit by moving branch optimizations to 
10854         branch-opts.c.
10855
10856         * method-to-ir.c: Merge generic sharing changes missed earlier.
10857
10858         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10859
10860         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10861         shared patches. Process METHODCONST as a shared patch.
10862
10863         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10864         as it crashes on the 2.0 mscorlib.
10865
10866         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10867         to cause crashes.
10868         
10869         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10870         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10871         by IMT.
10872
10873         * aot-compiler.c: Reorganize the got handling code to be a bit more
10874         understandable.
10875
10876 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10879         mono_patch_info_equals/hash, and use it to massively simplify
10880         get_plt_index ().
10881
10882         * mini.c (mono_patch_info_hash): Simplify this and add support for
10883         more patch types.
10884
10885         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10886
10887         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10888         handling code, since an offset is not enough to identify a trampoline.
10889
10890         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10891
10892 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10893
10894         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10895
10896         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10897
10898         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10899
10900         * decompose.c: PPC decompositions for various ops.
10901
10902         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10903
10904 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10907         call the generic trampoline code using a call, instead of a jump, to
10908         remove some special casing from the generic trampoline code.
10909
10910         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10911         (mono_codegen): Ditto.
10912
10913         * aot-compiler.c aot-runtime.c: Ditto.
10914
10915         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10916
10917         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10918         helper function to find the offset corresponding to a lazy fetch trampoline.
10919
10920         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10921         when doing generic sharing.
10922
10923         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10924         places.
10925         
10926         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10927         mini-trampolines.c to be with the other trampoline creation functions.
10928
10929         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10930         as it is equal to method->signature in most cases, add a 
10931         mono_emit_method_call_full variant which takes a signature and an imt
10932         argument as well.
10933
10934 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10935
10936         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10937         to this function, since it could be computed easily from the method 
10938         argument.
10939         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10940         more.
10941
10942         * method-to-ir.c mini.c: Remove references to 
10943         compile_generic_method_wo_context.
10944
10945         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10946         generic method calls.
10947         
10948         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10949         dimensional non-szarrays.
10950
10951         * mini.c (mini_init): Register mono_array_new_1.
10952
10953         * jit-icalls.c (mono_array_new_1): New jit icall.
10954
10955         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10956         pointing to the method.
10957
10958         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10959         method addresses belonging to METHOD_JUMP patches in the 
10960         jump_target_got_slot_hash.
10961         (mono_aot_load_method): Ditto.
10962
10963         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10964         METHOD_JUMP patches.
10965
10966         * mini.c (mini_create_jit_domain_info): New helper function which 
10967         initializes/frees domain->runtime_info.
10968         (mini_free_jit_domain_info): Ditto.
10969         (mini_init): Install the domain hook functions with the runtime.
10970
10971         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10972         information maintained by the JIT.
10973
10974         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10975         insertion into jump_table_hash into mono_codegen (), also implement proper
10976         locking.
10977
10978         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10979         tail calls, it is already done by the aot code.
10980         
10981         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10982         mechanism on amd64.
10983
10984         * iltests.il.in: Make the jmp test a bit more complex.
10985
10986         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10987         generic instances which doesn't have a token.
10988
10989         * aot-runtime.c (decode_method_ref): Ditto.
10990         
10991         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10992         can handle this case now.
10993         (handle_box): Ditto.
10994
10995 2008-08-15  Geoff Norton  <gnorton@novell.com>
10996
10997         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10998         debugging check.
10999
11000 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11003         calling generic methods.
11004
11005         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11006
11007         * aot-runtime.c (decode_patch_info): Ditto.
11008
11009         * mini.c (mono_resolve_patch_target): Ditto.
11010         
11011         * patch-info.h: Add METHOD_RGCTX.
11012
11013         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11014
11015 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11018         arguments in registers.
11019
11020         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11021         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11022
11023         * mini.c (mini_method_compile): Abort aot compilation for generic
11024         methods if generic sharing is disabled.
11025         
11026         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11027         an mrgctx.
11028
11029         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11030         requiring an mrgctx.
11031
11032         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11033         store instructions when converting a vcall to a normal call.
11034
11035         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11036         mono_arch_find_jit_info.
11037
11038 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11041         avoid calling mono_method_full_name () for every method even if the
11042         env var is not set.
11043         (check_inline_caller_method_name_limit): Ditto.
11044
11045 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11048         assemblies in one run.
11049
11050         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11051         skipped methods if it is not 0.
11052
11053         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11054
11055 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11056
11057         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11058           MONO_ARCH_HAVE_UNWIND_TABLE.
11059
11060         Contributed under MIT/X11 license.
11061
11062 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11063
11064         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11065           from default optimizaton list on Winx64.
11066
11067         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11068
11069         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11070           the LMF from the MonoJitTlsData structure.
11071
11072         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11073
11074         Contributed under MIT/X11 license.
11075
11076 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * mini.c (sigsegv_signal_handler): Fix the build.
11079
11080         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11081         assembly->aot_module.
11082
11083         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11084         hash table. This simplifies and speeds up a lot of code, and fixes support
11085         for .netmodules.
11086
11087         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11088         with the runtime.
11089
11090         * mini-exceptions.c: Ditto.
11091         
11092         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11093         'native_offset' argument, since these are computed in the 
11094         mono_find_jit_info () function.
11095
11096         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11097         is used by exceptions-ppc.c.
11098
11099         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11100         mono_arch_find_jit_info ().
11101         
11102         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11103         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11104         generic code in mini-exceptions.c.
11105
11106 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11107
11108         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11109
11110         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11111         
11112         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11113         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11114         called while holding the loader lock. Fixes #415608.
11115         (mono_aot_get_method_from_token_inner): Ditto.
11116
11117 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11120         to reduce differences between this and the generic implementation in
11121         mini-exceptions.c.
11122         (ves_icall_get_frame_info): Ditto.
11123
11124         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11125
11126         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11127         longer neccesarry.
11128
11129         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11130         mono_arch_get_call_filter () and make it non-static, for consistency with the
11131         other architectures.
11132
11133 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11134
11135         * mini.c:
11136         * local-propagation.c:
11137         * mini-x86.c: Correct the name of arch defines.
11138
11139 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11142         NO_EMULATE_LONG_SHIFT_OPS define.
11143
11144 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11145
11146         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11147         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11148
11149         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11150         MACH fixes. Merged from the 2.0 branch.
11151
11152         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11153
11154         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11155         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11156
11157         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11158
11159         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11160         mono_marshal_get_native_wrapper () signature changes.
11161
11162 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11163
11164         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11165         conversion bug under arm.
11166
11167 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11168
11169         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11170
11171         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11172         with overflow checking.
11173
11174 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11175
11176         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11177         to the genmdesc.pl file
11178
11179 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11180
11181         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11182         arg_array in the soft-float versions of the LOAD/STORE macros.
11183
11184         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11185         implementation.
11186
11187         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11188
11189 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11190
11191         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11192         a float HFA. Fixes #413621.
11193
11194 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11195
11196         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11197         frame_size to args_size. Fixes build.
11198
11199 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11202         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11203
11204         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11205         the stack are not unaligned. Fixes #413247.
11206         
11207 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11208
11209         * mini.c: update jitted methods performance counters.
11210
11211 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11212
11213         * mini-exceptions.c: increase the exceptions thrown performance
11214         counter in mono_handle_exception ().
11215
11216 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11219         can work with netmodules.
11220
11221 2008-07-28  Geoff Norton  <gnorton@novell.com>
11222
11223         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11224         regression tests.
11225
11226 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11229         correct place.
11230
11231 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11232
11233         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11234           The float param registers and other param registers must be the 
11235           same index on Windows x64.
11236
11237         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11238           ArgValuetypeAddrInIReg argument case.  Setting the argument
11239           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11240
11241         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11242           variable computed above as the copy length for arguments of storage
11243           type ArgValuetypeAddrInIReg.
11244
11245         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11246           ArgValuetypeAddrInIReg argument case.  This case will rely on
11247           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11248
11249         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11250           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11251           jump and tail call instructoins as they do not follow the typical call behavior.
11252
11253         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11254           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11255           local variable and pass the local variable by reference to the called method.
11256
11257         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11258           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11259           of a struct is passed in a register it must be saved with the other
11260           volatile argument on the stack.
11261
11262         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11263           frame pointer the stack adjustment value must be saved to the unwind 
11264           info structure.
11265
11266         Contributed under MIT/X11 license.
11267
11268 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11271         which got lost in the merge.
11272
11273 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11276         build.
11277
11278         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11279         
11280         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11281         icalls, since they won't be patched.
11282
11283         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11284         different code sequence when running under valgrind to prevent some valgrind
11285         errors.
11286
11287         * iltests.il.in: Add new regression test.
11288
11289         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11290         end with a throw.
11291
11292         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11293         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11294
11295         * iltests.il.in: Add new test.
11296
11297         * aot-compiler.c: Fix some warnings.
11298
11299         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11300         Fixes #412494.
11301
11302 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11303
11304         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11305         (mini_usage_jitdeveloper): Add a missing --wapi option.
11306
11307 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11308
11309         * mini-codegen.c: Simplify the is_fp macros.
11310         (free_up_ireg): Remove, use free_up_reg instead.
11311         (free_up_reg): Fix the fp case.
11312
11313 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11316         lowered earlier.
11317
11318         * exceptions-x86.c: Merge some changes which seemed to have got lost
11319         in the linear-ir merge.
11320
11321         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11322
11323         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11324         long vreg volatile even if the variable was already created.
11325
11326         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11327         volatile variables.
11328
11329 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11330
11331         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11332
11333         * mini.c (mono_jit_compile_method_inner): Add support for 
11334         MONO_EXCEPTION_BAD_IMAGE.
11335
11336         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11337         mini_method_get_context () returns NULL. Fixes #356531.
11338
11339         * mini.c (mono_method_to_ir): Ditto.
11340         
11341         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11342         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11343
11344 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11345
11346         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11347         in the LDFTN implementation.
11348
11349 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11350
11351         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11352         code, patch calls to icalls, too, even if they're not in the
11353         shared generic code hash.  Fixes #411962.
11354
11355 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * cpu-x86.md: Increase the length of the fcall opcodes.
11358
11359         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11360         calls returning floats.
11361
11362         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11363         on NEWARR.
11364         
11365         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11366         missed earlier.
11367
11368         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11369         into the domain->method_code_hash.
11370
11371         * aot-compiler.c: Fix win32 build.
11372
11373         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11374         
11375         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11376         gshared NEWARR implementation.
11377
11378         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11379
11380         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11381         can be used outside of method_to_ir.
11382
11383         * mini.h (MonoCompile): Add arg_types field.
11384
11385         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11386         
11387         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11388         the values of the local arg_array and param_types array.
11389
11390 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11393         got accesses might only get generated later when NEWOBJ is decomposed.
11394         
11395         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11396         looking up the native code of the target method when a delegate is called
11397         for the first time.
11398
11399         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11400         optimization.
11401
11402         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11403
11404         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11405         AOT work on platforms without a working dlsym implementation.
11406
11407         * mini.h: Bump AOT image format version.
11408         
11409 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11410
11411         * mini-exceptions.c: Free a MonoType with
11412         mono_metadata_free_type() instead of g_free().
11413
11414         * aot-runtime.c: Free a MonoType.
11415
11416 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11419         optimization.
11420
11421         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11422         fp stack on x86.
11423
11424 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11425         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11426         profiler hook.
11427
11428 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11429
11430         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11431         NEWOBJ calls on valuetypes.
11432
11433         * iltests.il.in: Add new test.
11434
11435         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11436
11437 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11440         is no longer needed.
11441
11442         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11443         non register sized integer arguments.
11444         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11445         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11446         emit_memcpy2 ().
11447
11448         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11449         CEE_MONO_RETOBJ.
11450         
11451         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11452         two a binop with different sized arguments is emitted.
11453
11454         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11455         instruction in the ins==NULL case.
11456
11457 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11458
11459         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11460
11461         * mini-x86.c: Fix osx build.
11462
11463         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11464         opcodes as well.
11465
11466         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11467         instruction for non int sized variables.
11468
11469         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11470         implementation.
11471
11472 2008-07-23  Robert Jordan  <robertj@gmx.net>
11473
11474         * method-to-ir.c: Fix MSVC build.
11475
11476 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11479         a non int sized type, widen it to an int since newer versions of gcc seem to
11480         generate code which needs this.
11481
11482         * ssa2.c abcremoval2.c: Fix warnings.
11483
11484         * *: Merge the Linear IR branch.
11485
11486         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11487         the ChangeLog file there describes all the changes done over the years. 
11488         Further documentation can be found at www.mono-project.com/Linear_IL.
11489
11490 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11491
11492         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11493           The float param registers and other param registers must be the 
11494           same index on Windows x64.
11495
11496         Contributed under MIT/X11 license.
11497
11498 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11499
11500         * mini.c: Make the previous fix GC safe.
11501
11502 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11503
11504         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11505
11506 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11507
11508         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11509           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11510           ArgValuetypeAddrInIReg instead.
11511
11512         Contributed under MIT/X11 license.
11513
11514 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * mini-codegen.c (get_register_spilling): Fix a warning.
11517
11518 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11519
11520         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11521         for types which the initialization fails. Raises the provided exception
11522         at the right stop after cleanup.
11523
11524 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * aot-compiler.c: Free most of the memory allocated during compilation.
11527
11528         * mini.c (mini_parse_debug_options): Fix a leak.
11529         
11530         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11531         during aot compilation.
11532
11533 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11534
11535         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11536         it has too much register pressure.
11537
11538 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11539
11540         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11541
11542 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11545         on x86.
11546
11547         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11548         on amd64 similar to the way it is done on arm.
11549
11550         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11551
11552         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11553         consistency, normalize error messages, avoid loading aot-only modules in
11554         normal mode.
11555
11556         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11557         for consistency.
11558
11559         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11560
11561 2008-07-11  Martin Baulig  <martin@ximian.com>
11562
11563         * debug-debugger.h
11564         (MonoDebuggerInfo): Add `interruption_request'.
11565
11566 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * aot-compiler.c (emit_plt): Remove some dead code.
11569
11570         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11571
11572         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11573         return the plt info offset belonging to a given plt entry.
11574
11575         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11576         mono_aot_get_plt_info_offset.
11577         
11578         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11579         similar to the amd64 code by makeing jumps through a separate jump table 
11580         instead of embedding the jump addresses into the code.
11581
11582 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11585         method.
11586
11587 2008-07-10  Martin Baulig  <martin@ximian.com>
11588
11589         * mini.c (mini_method_compile): Disable generics sharing when
11590         running in the debugger.
11591
11592 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11593
11594         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11595
11596         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11597         the local register allocator from running out of registers on x86 when 
11598         using aot.
11599
11600 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11601
11602         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11603         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11604         C4146.
11605
11606         Contributed under MIT/X11 license.
11607
11608 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11611         speed up the assembler.
11612
11613 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11616         support.
11617
11618         * mini.c: Move the soft float handling macros a bit earlier, add 
11619         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11620         place.
11621
11622         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11623
11624         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11625         read-only to help catch code allocation requests.
11626         
11627         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11628         and turn it off when using --aot-only or when compiling with --aot=full.
11629
11630         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11631         jump table for switches from the normal domain mempool, not the code
11632         manager.
11633
11634         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11635         unbox trampoline which handles aot-only mode too.
11636
11637         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11638         an AOTed unbox trampoline.
11639
11640         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11641
11642 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11643
11644         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11645         ""
11646
11647         Contributed under MIT/X11 license.
11648
11649 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11650
11651         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11652           the unwind information for the method at the end of the allocated block.
11653           
11654         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11655           MonoCompileArch to hold the unwind info for SEH on Winx64
11656         
11657         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11658           frame pointer info for the method being compiled.
11659           
11660         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11661           the call to mono_exception_from_token.
11662           
11663         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11664           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11665           information is stored a the end of the method block because it is all 32-bit offset based.
11666
11667         Contributed under MIT/X11 license.
11668
11669 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11672
11673         * wapihandles.c: Fix warnings.
11674
11675         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11676         mode.
11677
11678         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11679         mono_jit_compile_method in aot-only mode since that calls the type 
11680         initializer.
11681         
11682         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11683         get_delegate_invoke_impl in aot-only mode.
11684
11685         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11686
11687 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11690
11691         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11692         is on by default.
11693
11694         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11695
11696         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11697         init trampoline from the AOT file as well.
11698
11699         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11700         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11701         code.
11702
11703         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11704         mono_init.
11705
11706         * exceptions-amd64.c: Add _full variants for the remaining exception code
11707         creation functions as well, allow emission of relocatable code, remove
11708         caching since that is now done by the caller.
11709
11710         * mini-exceptions.c: Add _full variants for the remaining exception code
11711         creation functions as well, add aot-only support.
11712
11713         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11714         if we can determine a proper token for them.
11715         (add_wrappers): Add a few more wrappers.
11716         (emit_method_code): Remove some dead code.
11717         (emit_trampolines): Emit exception code too.
11718
11719         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11720
11721         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11722         mono_array_new_va which avoids varargs.
11723
11724         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11725
11726         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11727         mono_arch_create_specific_trampoline () in all places.
11728
11729         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11730         a bit so it can be used for other things as well.
11731         
11732         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11733         on demand as well.
11734
11735         * exceptions-amd64.c: Rename the caching from the exception code creation
11736         functions, it is done by the caller instead.
11737         
11738         * exceptions-amd64.c: Change the signature of the exception code creation 
11739         functions to allow the creation of relocatable code later.
11740
11741         * mini-exceptions.c: Add a set of functions to query the various 
11742         runtime-generated exception functions.
11743
11744         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11745         mono_arch_.. () functions.
11746         
11747 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11750
11751         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11752
11753         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11754         (mini_get_vtable_trampoline): Ditto.
11755
11756         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11757         code in the AOT case by returning the code size and a list of relocations to
11758         the caller.
11759
11760         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11761
11762 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11763
11764         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11765           clean the stack.
11766
11767         Contributed under MIT/X11 license.
11768
11769 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11770
11771         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11772         so the buffer size can be computed correctly. Fixes #404735.
11773
11774         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11775         normally as cfg->debug_info is already freed.
11776
11777 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * mini-amd64.c: For calls returning vtypes in registers, don't store
11780         the return address on the stack, instead allocate a separate local for
11781         it. Fixes #404729.
11782
11783 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11784
11785         * mini-trampolines.c, mini.h: Add an argument to
11786         mono_create_jit_trampoline_in_domain() for turning off the adding
11787         of the sync wrapper.
11788
11789         * mini.c: Use the JIT trampoline without sync instead of
11790         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11791         be patched.
11792
11793 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11794
11795         * driver.c: Turn on GSHARED optimization by default.
11796
11797 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11798
11799         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11800         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11801
11802         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11803         create a variant of the generic trampoline code callable from AOTed trampolines.
11804
11805         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11806         trampoline code callable from AOTed trampolines.
11807
11808         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11809
11810 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11811
11812         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11813         pass-through manner.
11814
11815         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11816         and don't fail sharing for them anymore.
11817
11818         * mini-exceptions.c: Handle exceptions in shared generic methods.
11819
11820         * generic-sharing.c: When checking the context of a generic
11821         method, also check its class's context.  Don't treat wrappers as
11822         sharable.
11823
11824         * mini-trampolines.c: Some code factored out to
11825         metadata/generic-sharing.c.  Handle the MRGCTX case.
11826
11827         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11828         we must deal with the method being of another instantiation of the
11829         class.  Add static rgctx invoke wrappers to generic methods.
11830
11831 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11832
11833         * mini.c: Provide all jit infos of generic shared methods with a
11834         generic jit info.
11835
11836         * mini-exceptions.c: Handle the new situation that a generic info
11837         might be available, but not info about the this/vtable/mrgctx
11838         variable.
11839
11840 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11841
11842         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11843         generic methods.
11844
11845 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11846
11847         * dominators.c (check_dominance_frontier): Fix a warning.
11848
11849         * mini.h: Add some missing prototypes.
11850
11851         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11852
11853         * driver.c (mono_jit_init_version): Correct the comments since the first
11854         argument should be the name of the root domain, not a filename.
11855
11856         * aot-runtime.c (make_writable): Error out if this is called while running
11857         with --aot-only.
11858         (load_aot_module): Ditto.
11859
11860         * aot-compiler.c: Really fix the computation of method indexes.
11861
11862         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11863         optimizations as this is no longer called frequently.
11864
11865         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11866         method and the invoke impl code and pass it to the delegate trampoline instead of
11867         just the delegate class.
11868
11869 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11870
11871         * aot-compiler.c: Fixup the computation of method indexes.
11872         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11873         the method builder infrastructure.
11874
11875         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11876         has no header.
11877
11878         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11879         mode, load the method right away instead of creating a trampoline.
11880
11881         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11882
11883         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11884         some checks a bit.
11885
11886 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11889         (mono_aot_load_method): Use method_index instead of method->token.
11890
11891         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11892         can handle icalls etc. properly.
11893
11894         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11895
11896         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11897
11898         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11899         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11900         JIT_ICALL_ADDR patch type.
11901
11902         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11903
11904         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11905         request flag.
11906         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11907
11908         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11909
11910 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11913         domain->jit_code_hash.
11914
11915 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11916
11917         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11918
11919 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11922         get_this_arg_from_call, let it compute it when needed.
11923
11924         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11925         gsctx from code only when needed.
11926
11927         * mini-trampolines.c (get_generic_context): Rename this to 
11928         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11929         it can be called by the arch backends.
11930
11931         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11932
11933 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * driver.c (mono_main): Add experimental --aot-only command line option.
11936
11937         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11938         set.
11939
11940 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11941
11942         * driver.c (DllMain): Remove mono_module_handle.
11943
11944         Contributed under MIT/X11 license.
11945
11946 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11947
11948         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11949         for emitting methods which are not in the source assembly. Detect and report
11950         failure of assembling+linking.
11951         
11952         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11953
11954         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11955
11956 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11957
11958         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11959
11960 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11961
11962         * mini.h: Remove some obsolete prototypes.
11963
11964         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11965
11966 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11967
11968         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11969         supported by Visual Studio, so use alloca().
11970
11971 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11972
11973         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11974         Fixes #402585.
11975
11976 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11977
11978         * mini.c: Fail sharing of a generic method if it contains an open
11979         catch clause (because we don't pass MRGCTXs yet).
11980
11981 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11982
11983         * mini.c: When compiling a method with generic sharing, insert the
11984         method instantiated with an all-Object generic context into the
11985         jit info table, instead of the context of the first instantiation
11986         of the method we happen to compile.
11987
11988 2008-06-18  Martin Baulig  <martin@ximian.com>
11989
11990         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11991         `major_version' and `minor_version'.
11992
11993 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11994
11995         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11996         mono_method_is_generic_sharable_impl() takes an additional
11997         argument specifying whether to treat type variables as reference
11998         types.
11999
12000 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12001
12002         * mini.h: Removed obsolete prototypes.
12003
12004 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12005
12006         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12007         already handle them.
12008
12009 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12010
12011         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12012         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12013         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12014         tramp-x86.c: Added a MonoGenericContext* argument to
12015         mono_arch_get_unbox_trampoline() so that it can call other
12016         functions which require it.
12017
12018 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12019
12020         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12021         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12022         mono_arch_get_this_arg_from_call() takes a
12023         MonoGenericSharingContext* as well.
12024
12025 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12026
12027         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12028         implement generic sharing of unbox.
12029
12030 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12031
12032         * mini.c: Don't compute the vtable to determine whether a field is
12033         special static, because it might not work for open types.
12034
12035 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12036
12037         * mini.c: Removed the unused token_type and token_source arguments
12038         from get_runtime_generic_context_ptr().
12039
12040 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12041
12042         * mini.c (ADD_BINOP): fix the build
12043
12044 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12047         a widening op.
12048
12049 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12050
12051         * mini.h: Removed class relations enum that's not used anymore.
12052
12053 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12054
12055         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12056
12057         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12058         the lazy fetch trampoline access code.
12059
12060 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12063
12064 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12067
12068         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12069
12070         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12071
12072 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12075         intrinsics.
12076
12077         * mini-ops.h: Add MIN/MAX_UN opcodes.
12078
12079         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12080         intrinsics.
12081
12082         * basic-math.cs: Add more min/max tests.
12083
12084         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12085
12086 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12087
12088         * mini.c: Small fix in the prologue of emit_castclass.
12089
12090 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12093
12094         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12095         do not work even for unsigned types. Fixes #400014.
12096
12097         * basic-math.cs: Add regression tests for unsigned Min/Max.
12098
12099 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12100
12101         * mini.c: Added additional context_used argument to several
12102         functions, which will be needed for sharing generic methods.  Use
12103         GET_RGCTX macro wherever appropriate.  Declare only one
12104         context_used in mono_method_to_ir().
12105
12106 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12107
12108         * mini.c, generic-sharing.c: Removed generic class relations.
12109
12110         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12111         functions due to MRGCTX changes.
12112
12113 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12114
12115         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12116         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12117         with calculated IMT.
12118
12119         * mini.c: Generic sharing of calls via generic interfaces.
12120
12121         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12122         generic method with non-constant MonoGenericContext*.  Instead,
12123         the context is taken out of the method itself.
12124
12125 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12126
12127         * mini.c: Generic sharing of ldvirtftn.
12128
12129 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12130
12131         * mini.c: Generic sharing of ldftn.
12132
12133 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12134
12135         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12136
12137 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12138
12139         * mini.c: Generic sharing of the special case of ldtoken followed
12140         by a call to GetTypeFromHandle.
12141
12142 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12143
12144         * mini.c: Generic sharing of box for nullable types.
12145
12146 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12149         are passed on the stack. Fixes #324807.
12150
12151 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12152
12153         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12154         for the ArgValuetypeAddrInIReg case.
12155
12156         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12157         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12158
12159         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12160         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12161         local variable and pass the local variable by reference to the called method.
12162           
12163         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12164         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12165
12166         Contributed under MIT/X11 license.
12167
12168 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12169
12170         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12171
12172         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12173         everything.
12174
12175 2008-06-10  Martin Baulig  <martin@ximian.com>
12176
12177         * debug-mini.c
12178         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12179
12180 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12181
12182         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12183         possible error when no arguments are passed.
12184
12185         Contributed under MIT/X11 license.
12186
12187 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12188
12189         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12190         where the file name is NULL.
12191
12192 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12193
12194         * mini.c: Fix s390 build.
12195
12196 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12197
12198         * trace.c (mono_trace_parse_options): Fix warnings.
12199
12200         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12201
12202 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * mini.c (remove_block_if_useless): Avoid printing the method name.
12205         
12206         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12207         MONO_INST_NEW.
12208
12209         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12210         LMF. Not yet used.
12211
12212         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12213         translated code after it has been patched.
12214
12215 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12216
12217         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12218         avoid problems during code patching on SMP systems.
12219         (emit_call): Avoid adding a patch info which is already added by 
12220         emit_call_body.
12221         (mono_arch_emit_exceptions): Ditto.
12222
12223 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12224
12225         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12226         MONO_TYPE_ISSTRUCT already checks for it.
12227
12228 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12229
12230         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12231           structs with floats on Winx64 the float registers are not used.  
12232           The integer registers are always used..
12233         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12234           only one register will be used and only if the size of the struct 
12235           is 1,2,4, or 8 bytes.
12236
12237         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12238           to work for Winx64.
12239
12240         Contributed under MIT/X11 license.
12241
12242 2008-06-05  Martin Baulig  <martin@ximian.com>
12243
12244         * debug-debugger.c (debugger_lookup_class): Also call
12245         mono_class_setup_methods() here; we're only called from RTI.
12246
12247 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12248
12249         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12250         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12251         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12252         Post-process object files and add dtrace-generated object, if necessary.
12253
12254         Contributed under MIT/X11 license.
12255
12256 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12257
12258         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12259         element class.
12260
12261         * mini.c: Generic sharing for unbox.any and castclass.
12262
12263 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12264
12265         * mini.c: Ignore tailcall prefix in shared generic code and when
12266         doing calls which require a vtable/rgctx argument.
12267
12268 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12269
12270         * mini.c: Don't free the JIT info.
12271
12272         * driver.c: Changes in the JIT info table testing code.
12273
12274 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12277         interruption. Fix some warnings.
12278
12279         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12280         interruption_checkpoint.
12281
12282 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12283
12284         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12285         from embedding applications.
12286
12287 2008-06-02  William Holmes  <billholmes54@gmail.com>
12288
12289         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12290           reserving 32 bytes on the stack when making calls. 
12291
12292         Contributed under MIT/X11 license.
12293
12294 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12297         the linear IL branch.
12298
12299         * driver.c: Print out more information for --version on arm.
12300
12301 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12304         bb_exit instead, since out of line bblocks might not actually be emitted
12305         out-of-line.
12306         
12307         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12308         maximum epilog size for out of line bblocks if tracing is enabled.
12309
12310         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12311
12312 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12313
12314         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12315
12316 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12317
12318         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12319         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12320         opcodes.
12321
12322 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12325         the 'value' to store is a constant.
12326
12327         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12328
12329         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12330         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12331
12332 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12333
12334         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12335         for accessing method->generic_container.
12336
12337 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12340         
12341         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12342
12343         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12344
12345         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12346         fails.
12347
12348 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12351
12352         * mini.c: Handle the case when mono_class_vtable () fails.
12353
12354 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12355         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12356         the stat profiler.
12357
12358 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12359
12360         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12361         together with domain sharing.
12362
12363 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12364
12365         * mini.c: Treat callvirts to final methods like non-virtual calls
12366         when doing generic sharing, i.e. look them up in the runtime
12367         generic context.
12368
12369 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12370
12371         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12372         with computed types (for generic sharing).
12373
12374         * mini.c: Generic sharing for mkrefany and refanyval.
12375
12376 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12377
12378         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12379         possible.
12380
12381         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12382         the generic sharing code.
12383         
12384         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12385         when needed.
12386
12387 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12390
12391 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12392
12393         * driver.c: updated copyright date
12394
12395 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12396
12397         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12398         needed.
12399
12400 2008-05-19  Martin Baulig  <martin@ximian.com>
12401
12402         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12403         pointing to the new `_mono_debug_using_mono_debugger' variable.
12404
12405         * driver.c
12406         (mono_main): Check mono_debug_using_mono_debugger() rather than
12407         the `MONO_INSIDE_MDB' environment variable to check whether we're
12408         inside the debugger.
12409
12410 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12411
12412         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12413         argument.
12414
12415 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12416
12417         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12418
12419         * mini.c: Added mini_assembly_can_skip_verification. This
12420         function checks if the assembly requested to skip verification. 
12421         Fixes part of #387274.
12422
12423 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini.c (mini_get_method): Disable the check for open generic classes when
12426         using generic sharing.
12427
12428         * generics.cs: Add a test for #387034.
12429
12430         * mini.c (mini_get_method): Check whenever the method class is an open generic
12431         type, and return NULL in that case, causing a verification error. Fixes
12432         #384123.
12433
12434 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12435
12436         * driver.c (mono_main): Revert r102623. The right
12437         thing to do is to enable the verifier under verifiable
12438         unless a --security flag was passed.
12439
12440         We need this non-trivial behavior for --verify-all otherwise
12441         mcs-compileall won't be able to use it. As it needs everything to
12442         be verified under validil.
12443
12444 2008-05-06  Martin Baulig  <martin@ximian.com>
12445
12446         Fix #383749.
12447
12448         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12449         (mono_debugger_thread_cleanup): Likewise.
12450         (mono_debugger_extended_notification): Likewise.
12451
12452 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12453
12454         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12455         against both inflated and non-inflated methods. We need to check against the
12456         generic definition for cases where the instantiated method is not visible.
12457         We need to check against the inflated types for cases where the instantiation
12458         changes any super type. This fixes #382986.
12459
12460         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12461         that check for visibiliy as generic params only appears as the type subject
12462         of tokens on call opcodes. Field manipulation and ldftn must always
12463         target an exact type.
12464
12465 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12466
12467         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12468         if no related --security flag is passed.
12469
12470 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12471
12472         * mini-arch.h: Prepare support for ppc64.
12473
12474         Contributed under MIT/X11 license.
12475
12476 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12477
12478         * aot-runtime.c: Prepare support for ppc64.
12479
12480         Contributed under MIT/X11 license.
12481
12482 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12483
12484         * mini-ops.h: Prepare support for ppc64.
12485
12486         Contributed under MIT/X11 license.
12487
12488 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12489
12490         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12491
12492         Contributed under MIT/X11 license.
12493
12494 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12495
12496         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12497         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12498         assemblies on windows.
12499
12500 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12501
12502         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12503         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12504         * main.c: Use UTF-8 encoded command line instead of Windows default code
12505         page on Windows to support Unicode.
12506         * driver.c (DllMain): New function for mixed-mode assembly support.
12507         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12508         export __stdcall functions without decoration.
12509
12510         Contributed under MIT/X11 license.
12511
12512 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12513
12514         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12515         saving it very early.
12516
12517 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12518
12519         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12520         deleted.  The only way to access the new RGCTX is via the
12521         trampline.
12522
12523         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12524         vtable instead of the RGCTX to static methods.
12525
12526         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12527         accessing the new RGCTX.
12528
12529         * generic-sharing.c: There is no separation between self, type
12530         arguments and other types in the RGCTX anymore.
12531
12532 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12533
12534         * mini-amd64.c (add_general): Remove previous stack adjustment.
12535         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12536         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12537         for 32 bytes of stack space reserved for all calls.
12538         
12539         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12540         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12541         adjustment.
12542         
12543         Code contributed under MIT/X11 license.
12544
12545 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12546
12547         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12548         against the root definition, peeling out method and type instantiations.
12549         Cache verify success results, code that fails verification is still
12550         checked multiple times.
12551
12552 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12555
12556 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12557
12558         * mini-amd64.c (add_general): Always increment stack on Win64.
12559         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12560         on Win64.
12561         
12562         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12563         stack based argument handling on Win64.
12564         
12565         Code contributed under MIT/X11 license.
12566
12567 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12568
12569         * Makefile.am (version.h): Add support for git-svn.
12570
12571 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12572
12573         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12574         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12575         avoiding allocations and libc functions which might deadlock.
12576         
12577         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12578         'no-gdb-backtrace' option is set.
12579
12580         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12581
12582         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12583
12584 2008-04-21  Martin Baulig  <martin@ximian.com>
12585
12586         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12587         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12588
12589 2008-04-21  Martin Baulig  <martin@ximian.com>
12590
12591         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12592         `thread_vtable', `event_handler_ptr' and `event_handler'.
12593
12594 2008-04-21  Martin Baulig  <martin@ximian.com>
12595
12596         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12597         allows delayed initialization of the `executable_code_buffer' when
12598         attaching.
12599
12600 2008-04-21  Martin Baulig  <martin@ximian.com>
12601
12602         * mini.h (mono_debugger_create_notification_function): Removed.
12603         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12604
12605         * mdb-debug-info64.s
12606         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12607
12608         * mdb-debug-info32.s
12609         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12610
12611         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12612         currently only works on x86 and x86_64, so don't create it on ppc.
12613
12614 2008-04-21  Martin Baulig  <martin@ximian.com>
12615
12616         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12617
12618         * mini.c
12619         (mini_method_compile): In the fp elimination check, check
12620         `debug_options.mdb_optimizations' in addition to
12621         mono_debug_using_mono_debugger().       
12622
12623         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12624         disable some JIT optimizations which are only disabled when
12625         running inside the debugger.
12626         Added `--help-debug' option to describe the debugging options.
12627         (parse_debug_options): New static function to parse the `--debug'
12628         options, so we can easily add more stuff in future.
12629
12630 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12631
12632         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12633         the method has no body.
12634
12635 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12636
12637         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12638         assembly is not allowed in MSVC 64-bit compiler. 
12639         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12640         as we get floating point exceptions everywhere.
12641         
12642         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12643         correctly align arguments for call to throw_exception.
12644         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12645         
12646         Code contributed under MIT/X11 license.
12647
12648 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12649
12650         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12651
12652 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12653
12654         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12655
12656         * mini-amd64.c (NEW_INS): Set cil_code.
12657
12658         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12659         from mini-amd64.c so all debugger related logic is in one place.
12660
12661         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12662         later won't have a random ip assigned to them.
12663
12664 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12665
12666         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12667         the arch specific function initializes code_size.
12668         (mono_create_delegate_trampoline): Ditto.
12669
12670         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12671         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12672         platforms.
12673
12674         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12675         running under the debugger.
12676
12677         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12678         debugger.
12679
12680         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12681         debugger. Also move the disabling of optimizations here from driver.c.
12682         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12683         debugger.
12684
12685         * mini.h (MonoCompile): Add a few new flags.
12686
12687 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12688
12689         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12690         so the cil_code field of created MonoInst's is properly set.
12691         (mini_select_instructions): Ditto.
12692
12693         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12694         (MONO_INST_NEW_CALL): Ditto.
12695
12696         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12697         in many places so the ins->cil_code field is properly initialized.
12698
12699         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12700         place.
12701
12702 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * mini.c (mini_method_compile): Print a different message when compiling a 
12705         shared method.
12706         
12707         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12708         > 1.
12709
12710 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12713         SSE2 instructions.
12714
12715         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12716         
12717 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12718
12719         * mini.c (handle_stack_args): Make this return void since its return value was
12720         never used. Also set cfg->unverifiable for invalid IL instead of calling
12721         G_BREAKPOINT ().
12722
12723 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12724
12725         * mini.c: Make sure "this" is live in catch clauses with type
12726         variables in shared generic code.
12727
12728 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12729
12730         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12731         generic_class_is_reference_type() to ensure the proper behaviour
12732         when sharing generic code and the type in question is a type
12733         argument.
12734
12735 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12738         race conditions when printing thread dumps. Fixes #377738.
12739
12740 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12741         
12742         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12743         shows up when both MonoInst arguments can cause aliasig.
12744         There is likely no way in the current JIT to trigger this problem, but
12745         it showed up in the development of generics sharing, when in a new
12746         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12747         When the generics sharing code will be committed, its tests will be
12748         valid also for this bug.
12749
12750 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12753         PATCH_INFO_METHOD.
12754
12755         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12756         NULL.
12757
12758 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12761         use a more detailed exception message for InvalidCastException.
12762
12763         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12764
12765         * driver.c (mono_main): Add --debug=casts option to turn on better 
12766         InvalidCastException message details.
12767
12768         * mini.c (mini_get_debug_options): New helper function to return the address of
12769         the debug_options variable.
12770
12771         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12772         the jit_tls TLS variable.
12773
12774         * mini.c (mono_jit_tls): New TLS variable.
12775
12776         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12777         option is used.
12778
12779 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12780
12781         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12782
12783         * mini.c: Removed verifer related stuff, code moved to verify.c.
12784
12785         * driver.c: Using code from verify.c instead of mini.c.
12786
12787 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12790         longer valid.
12791
12792 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12793
12794         * mini.c (check_for_method_verify): Enabling verification of
12795         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12796         have been fixed.
12797
12798 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12801         caller saved registers as well.
12802         
12803         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12804         saved registers as well.
12805
12806 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12809
12810         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12811         code.
12812
12813 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12814
12815         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12816         to get_call_info.
12817         (get_call_info): Take a gsctx argument instead of 'cfg'.
12818
12819 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12822         mono_verify_all is set.
12823
12824         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12825
12826         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12827
12828 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12829
12830         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12831         an exception.
12832
12833         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12834         verifier and the code generated by the compiler.
12835
12836 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12837
12838         * mini.c: Generic sharing of the non-nullable case of the box
12839         instruction.
12840
12841 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * inssel.brg: Fix the build.
12844
12845         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12846
12847 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12848
12849         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12850         Array:Address. Fixes #372410.
12851
12852         * iltests.il.in: New tests for readonly prefix.
12853
12854 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12855
12856         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12857         mini-trampolines.c.
12858
12859         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12860         mini-exceptions.c.
12861
12862         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12863         
12864         * mini.c (mono_decompose_op_imm): New helper function.
12865
12866         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12867         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12868         return value.
12869
12870         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12871         mono_arch_output_basic_block. Fix warnings.
12872
12873         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12874         for now.
12875
12876 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12877
12878         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12879         since the extra frame is now detected automatically inside the loop.
12880
12881         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12882         opts which are now in mono_peephole_ins ().
12883         
12884         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12885
12886         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12887         frames and skip duplicate managed-to-native frames. Fixes #367665.
12888
12889         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12890         opts which are now in mono_peephole_ins ().
12891         (mono_arch_peephole_pass_2): Ditto.
12892
12893         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12894
12895         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12896         arch independent peephole optimizations.
12897
12898         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12899         opts which are now in mono_peephole_ins ().
12900
12901         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12902         
12903         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12904
12905         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12906         pattern.
12907
12908         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12909         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12910         opcode. 
12911
12912 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12915         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12916         return value.
12917
12918         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12919         mono_arch_output_basic_block. Fix warnings.
12920
12921 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12922
12923         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12924         conv.ovf.u.un.
12925
12926 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12927
12928         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12929         conv.ovf.u.un.
12930
12931         * iltests.il: Add new tests.
12932
12933 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12934
12935         * mini.c: Removed Windows version macros.
12936
12937 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12938
12939         * generic-sharing.c: Put reflection types in the extensible part
12940         of the runtime generic context.
12941
12942         * mini.c: Generic sharing of the GetTypeHandle special case of the
12943         ldtoken instruction.
12944
12945 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12946
12947         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12948
12949         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12950         
12951         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12952         consistency with the other version on the linear IR branch.
12953
12954         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12955
12956         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12957
12958         * iltests.il.in: Add new tests.
12959
12960 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12963
12964         * iltests.il.in: Add new tests.
12965
12966 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12967
12968         * mini.c: Two variables with the same name were declared in
12969         nesting contexts and one wasn't initialized.  Fixed.
12970
12971 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12972
12973         * mini.c: Generic sharing of the initobj instruction.
12974
12975 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12976
12977         * mini.c: make the test to optimize ldtoken from typeof() more
12978         precise.
12979
12980 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12981
12982         * mini.c: Generic sharing of the initobj instruction for reference
12983         types.
12984
12985 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12986
12987         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12988         the mono_breakpoint_clean_code() code to perform bound checks.
12989
12990 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12991
12992         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12993         mono_arch_patch_callsite() to include the start of the managed method
12994         to be able to perform bound checks.
12995
12996 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12997
12998         * mini.c: Generic sharing for the isinst instruction.
12999
13000 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13001
13002         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13003         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13004         with the runtime generic context argument.
13005
13006         * mini.c: Share calls to several types of unsharable methods by
13007         putting the address of the method code in the runtime generic
13008         context and doing an indirect call.
13009
13010         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13011         to switches.
13012
13013 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13014
13015         * generic-sharing.c: Change due to a change in the runtime genric
13016         context API.
13017
13018 2008-03-15  Martin Baulig  <martin@ximian.com>
13019
13020         * tramp-x86.c
13021         (mono_arch_nullify_class_init_trampoline): Add call to
13022         mono_breakpoint_clean_code() to make things work when running
13023         inside the debugger.
13024
13025         * tramp-amd64.c
13026         (mono_arch_nullify_class_init_trampoline): Add call to
13027         mono_breakpoint_clean_code() to make things work when running
13028         inside the debugger.
13029
13030 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13031
13032         * inssel-long.brg (reg): Fix 64 bit build.
13033
13034 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13035
13036         * mini.c, mini.h: Share static generic code by passing it an
13037         implicit argument pointing to the runtime generic context.
13038
13039         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13040         inssel-long32-mips.brg: New opcodes for calling shared static,
13041         which need to be passed the runtime generic context.
13042
13043         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13044         argument on the stack in the prologue if needed.  New function for
13045         finding the runtime generic context argument from the registers
13046         saved by the trampoline.
13047
13048         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13049         runtime generic context argument.
13050
13051         * tramp-amd64.c: Also restore the register used for the runtime
13052         generic context argument.
13053
13054         * mini-trampoline.c: Resolve shared static calls by consulting the
13055         runtime generic context via the new argument.
13056
13057         * generic-sharing.c: Add an argument to sharability-checking
13058         functions that specifies whether type variables should be treated
13059         as sharable type arguments.
13060
13061         * inssel-x86.brg: Removed a superfluous, buggy rule.
13062
13063         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13064         to switches.
13065
13066 2008-03-14  Martin Baulig  <martin@ximian.com>
13067
13068         * debug-debugger.c (main_thread_handler): Call
13069         mono_runtime_run_main() without sending any notifications.
13070
13071         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13072
13073 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13074
13075         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13076
13077 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13078
13079         * tramp-x86.c: Fixed register restore offsets in the trampoline
13080         code for ECX and EDX.
13081
13082 2008-03-12  Geoff Norton  <gnorton@novell.com>
13083
13084         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13085         different ucontext_t implementations.
13086         * exceptions-arm.c: Use the above defines to get exceptions working on 
13087         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13088         * mini-arm.c: Implement iPhone icache support (based on a patch by
13089         Luke Howard lukeh@padl.com)
13090
13091 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13092
13093         * mini.c: Enable generic sharing of calls to non-static
13094         non-interface non-generic non-value-type methods.
13095
13096         * mini-trampolines.c: Resolve calls from shared generic code.
13097
13098 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13101
13102         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13103
13104 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13105
13106         * mini.c: some fixes for the AOT compiler.
13107
13108 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * cpu-amd64.md: Add clob:1 to some float opcodes.
13111
13112 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13113
13114         * mini.h: Added MiniVerifierMode enumeration.
13115
13116         * mini.c: Added mini_verifier_set_mode to control
13117         the usage of the new verifier.
13118
13119         * mini.c (mono_method): Integrated the new verifier.
13120
13121         * driver.c: Extended --security option with validil and
13122         verifiable options to activate the new verifier.
13123
13124 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13127         optimization to ctors taking 0 or 2 arguments too.
13128
13129         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13130         a bit.
13131
13132         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13133
13134         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13135
13136 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13139         non-aot case as well.
13140
13141         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13142
13143         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13144         changes.
13145
13146         * aot-compiler.c (encode_patch): Ditto.
13147
13148         * mini.h (G_MININT32): Fix the definition of this.
13149
13150 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13151
13152         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13153
13154         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13155
13156 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13157
13158         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13159         methods returning vtypes in registers.
13160         (mono_arch_allocate_vars): Ditto.
13161
13162         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13163
13164         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13165
13166         * generics.cs: Add a test from the linear IR branch.
13167
13168         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13169
13170         * mini.c (inline_method): Cache failed inline attempts.
13171
13172 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13173
13174         * mini.c: For shared methods of generic classes put the location
13175         of "this" into the MonoGenericJitInfo.
13176
13177         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13178         register out of a MonoContext by register number.  Add the generic
13179         sharing context as an argument to mono_arch_find_this_argument().
13180
13181         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13182         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13183         for new arch function.
13184
13185         * mini-exception.c: Handle open exception clauses in shared
13186         generic code.
13187
13188         * mini-trampolines.c: Supply additional argument to
13189         mono_arch_find_this_argument().
13190
13191 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13192
13193         * Makefile.am (regtests): Run the bench.exe tests last.
13194
13195 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13196
13197         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13198         a bit.
13199
13200 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13203         with MS.
13204
13205         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13206         
13207         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13208
13209         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13210         whose class has no cctor.
13211
13212         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13213
13214 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13217         unverified.
13218
13219 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13222         to be in sync with the code on the linear IR branch.
13223
13224         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13225
13226         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13227
13228 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13231
13232         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13233
13234         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13235
13236         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13237
13238         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13239         
13240         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13241         body.
13242
13243 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13244
13245         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13246         OP_LOADR4_MEMBASE emission.
13247
13248         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13249         (mono_spillvar_offset_float): Ditto.
13250
13251         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13252
13253         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13254         emission.
13255
13256         * basic-long.cs: Add regression tests for them.
13257
13258         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13259         use.
13260         (mono_arch_allocate_vars): Fix representation of single-precision float
13261         argument.
13262         (mono_arch_output_basic_block): Ditto.
13263
13264         * inssel-mips.brg: Ditto, remove duplicate items.
13265
13266         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13267         arguments of tail calls as on other platforms.
13268         (mono_arch_output_basic_block): Handle tail calls.
13269
13270         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13271         register.
13272
13273         * objects.cs (test_5_pass_static_struct): Add test for it.
13274
13275         Contributed under MIT/X11 license.
13276
13277 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * Makefile.am: Use gmcs for compiling the regression tests.
13280
13281         * *.2.cs *.2.il: Rename to *.cs and *.il.
13282
13283 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13284
13285         * regalloc.h: Make the vassign array smaller.
13286
13287         * mini.c (mini_method_compile): Remove an unused field in cfg.
13288
13289         * mini-codegen.c: Add a bunch of micro optimizations.
13290
13291 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * regalloc.h: Remove some unused fields.
13294
13295 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13296
13297         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13298
13299         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13300
13301 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13302
13303         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13304
13305         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13306         trampoline: Fetch an entry from the runtime generic context.  If
13307         it's NULL, jump to the actual trampoline to fill the runtime
13308         generic context.  Otherwise, return it.
13309
13310         * mini.c: Call the lazy fetch trampoline to get entries out of the
13311         runtime generic context.
13312
13313         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13314         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13315         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13316
13317 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13318
13319         * mini.c: Fetch data out of the extensible part of the runtime
13320         generic context instead of calling a helper function.
13321
13322         * generic-sharing.c: Some functions moved into
13323         metadata/generic-sharing.c.  Helper function for fetching other
13324         types now checks and asserts against extensible rgctx (just for
13325         debugging purposes - the helper function isn't called anymore
13326         unless for debugging).
13327
13328 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13331         for tail calls up to the point that the tests in iltests.exe run. Also add a
13332         dummy CKFINITE implementation.
13333         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13334         needed for trampoline LMF frames.
13335
13336         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13337         trampoline LMF frames.
13338
13339 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13340
13341         * mini.c (inline_method): clean any pending loader error when inlining fail.
13342         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13343
13344 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13345
13346         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13347
13348         * aot-runtime.c (decode_patch_info): Ditto.
13349
13350         * mini.c (mono_resolve_patch_target): Ditto.
13351         
13352         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13353         icall wrappers.
13354
13355         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13356         
13357         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13358         if it references an icall address.
13359
13360 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13361
13362         * cpu-s390x.md: Remove some more unused opcodes.
13363         
13364         * cpu-s390x.md: Remove some unused opcodes.
13365
13366         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13367         mono_op_imm_to_op ().
13368
13369         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13370         instead of a switch statement.
13371         
13372         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13373         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13374
13375         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13376         
13377         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13378
13379         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13380         -1.
13381
13382 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13385         opened. Fixes #362607.
13386
13387         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13388
13389         * iltests.il.in: Add a test for static methods in interfaces.
13390
13391 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13392
13393         * genmdesc.c (build_table): Fix a crash on older glib versions.
13394
13395         * cpu-sparc.md: Remove some unused opcodes.
13396         
13397         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13398         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13399
13400         * cpu-amd64.md: Remove some unused opcodes.
13401
13402         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13403         like the other opcodes.
13404
13405 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13408
13409         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13410
13411         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13412         variables 'cfg' instead of 'm' for consistency.
13413
13414         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13415
13416         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13417         argument holding the vtype return address, to avoid the ambigious use of
13418         cfg->ret for this purpose.
13419
13420         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13421
13422         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13423         
13424         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13425         new mono_print_ins () function which only takes one argument.
13426
13427 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13428
13429         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13430         macro arguments.
13431
13432 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13435
13436         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13437
13438         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13439         opcodes and other small changes.
13440
13441         * mini-ops.h: Add some new opcodes from the linear IR branch.
13442
13443         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13444
13445         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13446         opcodes, use the REG_MEMBASE opcodes instead.
13447         
13448         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13449         opcodes, use the REG_MEMBASE opcodes instead.
13450         
13451         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13452         linear IR branch.
13453
13454         * mini.c (mono_op_imm_to_op): New helper function.
13455
13456         * mini-ops.h: Add some opcodes from linear IR branch.
13457
13458 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13459
13460         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13461         <tsv@solvo.ru>.
13462
13463 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13466         OP_ICONV_TO_R4/R8.
13467
13468         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13469
13470 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * aot-compiler.c (emit_method_code): Add an assert.
13473
13474         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13475         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13476         methods.
13477
13478 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13481         some load/store opcodes so they are consistent. 
13482         (mono_arch_emit_prolog): Simplify some code.
13483
13484         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13485
13486         * objects.cs: Add tests for large argument offsets on ARM.
13487
13488         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13489         stack offsets. Fixes #359651.
13490
13491         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13492
13493         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13494
13495         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13496
13497         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13498
13499         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13500
13501         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13502         rid of CEE_CONV_R_UN.
13503
13504         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13505
13506 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13509
13510         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13511
13512         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13513
13514         * cpu-amd64.md: Remove some unused opcodes.
13515
13516         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13517
13518         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13519
13520         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13521         arch specific functions for its parts. Call the peephole pass after local
13522         regalloc so the prolog can compute a more accurate max_offset.
13523         
13524         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13525         the corresponding OP_I/OP_L opcodes.
13526
13527         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13528
13529         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13530
13531 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13534         as they are handled in mini.c.
13535
13536         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13537         
13538         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13539         case since it is handled in mini.c.
13540
13541         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13542
13543         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13544
13545         * *.c: Use the new opcodes in the IR and back end code.
13546
13547         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13548
13549         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13550
13551 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13552
13553         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13554         an assert because it has a race condition.
13555
13556 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13557
13558         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13559
13560         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13561
13562         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13563
13564         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13565         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13566
13567 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13568
13569         * cpu-amd64.md (move): Correct the maximum size of move.
13570
13571 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13572
13573         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13574         the generic class init trampoline to return quickly if the class
13575         is already inited.
13576
13577 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13578
13579         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13580         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13581
13582 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13583
13584         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13585         branch.
13586
13587 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13588
13589         * objects.cs: Add some soft-float tests.
13590
13591         * mini.c: Fix a couple more soft-float issues.
13592
13593         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13594
13595         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13596         avoid a REX prefix.
13597
13598 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13599
13600         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13601         exception happens while compiling a virtual method.
13602
13603 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13604
13605         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13606         
13607         * mini-sparc.c: Fix build.
13608
13609         * mini-sparc.c (get_call_info): Add support for generic sharing.
13610
13611         * mini-exceptions.c: Add a FIXME.
13612
13613 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13616         altstack handling code.
13617
13618         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13619         
13620         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13621
13622         * mini-s390.c: Add support for generic sharing.
13623
13624         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13625         Fix CAS on s390.
13626         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13627
13628         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13629
13630         * mini-s390x.c: Add support for generic sharing.
13631         
13632         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13633         Fix CAS on ia64.
13634         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13635
13636         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13637         can be used since it takes a 16 bit signed immediate.
13638
13639         * inssel-s390x.brg: Fix OP_SETRET.
13640
13641         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13642
13643         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13644
13645         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13646
13647         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13648
13649         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13650         in one place.
13651
13652         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13653         stuff.
13654
13655         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13656         of the unused mono_arch_patch_delegate_trampoline stuff.
13657
13658 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * basic-long.cs: Move the fp related tests to basic-float.cs.
13661
13662         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13663
13664         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13665
13666         * basic-calls.cs: Add a test for proper float argument passing.
13667
13668         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13669         if the context corresponds to an exception received through a signal.
13670
13671         * exceptions.cs: Add a test for nullref handling at the start of a try
13672         clause.
13673
13674         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13675
13676         * jit-icalls.c (mono_break): New JIT icall.
13677
13678         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13679
13680         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13681
13682 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13683
13684         * cpu-*.md: Get rid of unused opcodes.
13685
13686         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13687
13688         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13689         by all platforms.
13690
13691         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13692         define.
13693
13694         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13695         the arch independent trampoline code in mini-trampolines.c.
13696
13697         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13698
13699         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13700
13701         * mini-s390.h: Remove an unused define.
13702         
13703         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13704         the arch independent trampoline code in mini-trampolines.c.
13705
13706         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13707
13708 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13709
13710         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13711
13712         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13713
13714         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13715
13716         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13717
13718         * cpu-amd64.md: Use smaller sizes for int opcodes.
13719
13720         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13721
13722         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13723         objects.cs.
13724
13725         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13726         debugging.
13727
13728         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13729         instead of though a pointer to save an indirection when accessing elements of
13730         the array.
13731
13732         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13733         some typos.
13734         (NOT_IMPLEMENTED): New helper macro.
13735         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13736         of a bb.
13737
13738         * *.c: Use the new helper macro.
13739
13740 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13743
13744 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13745
13746         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13747         stack slots.
13748
13749 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13750
13751         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13752         profiling is enabled.
13753         
13754         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13755         the end.
13756         (mono_arch_emit_prolog): Add more first bblock optimizations.
13757
13758         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13759         in order if possible.
13760         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13761         bblock, since the arguments are still in their original registers.
13762
13763         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13764
13765 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13768         as well.
13769
13770         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13771         offset 0.
13772
13773         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13774
13775         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13776         process async exceptions received while in unmanaged code.
13777
13778         * mini.c (mini_init): Install a callback with the runtime which will be called
13779         when a thread receives an async exception while in unmanaged code.
13780
13781         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13782
13783         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13784
13785 2008-01-16  Wade Berrier  <wberrier@novell.com>
13786
13787         * cpu-g4.md:
13788         * cpu-arm.md:
13789         * cpu-s390x.md:
13790         fix build
13791
13792 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13795         compilation with sun cc.
13796
13797         * cpu-*.md: Fix the build.
13798
13799         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13800
13801         * mini-amd64.h: Add some comments to the MonoLMF structure.
13802
13803         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13804         
13805         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13806         in the LMF structure if possible. This saves two instructions in the
13807         managed->native wrappers.
13808
13809         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13810
13811 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13812
13813         * generic-sharing.c: New type argument lookup code which uses the
13814         runtime generic context template.
13815
13816 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13817
13818         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13819
13820         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13821         (mono_arch_output_basic_block): Fix localloc implementation.
13822
13823         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13824
13825         * mini-ia64.c (peephole_pass): Fix ia64 build.
13826
13827         * mini-amd64.c (peephole_pass): Fix a warning.
13828         
13829         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13830         at a constant offset from sp/fp.
13831
13832         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13833         instead of obtaining it from *lmf in the managed method case.
13834
13835 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13838
13839 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13840
13841         * mini.h (MonoInstList): New type.
13842         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13843         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13844         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13845         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13846         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13847         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13848         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13849         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13850         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13851         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13852         MONO_INST_LIST_FOR_EACH_ENTRY,
13853         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13854         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13855         mono_inst_list_first, mono_inst_list_last,
13856         mono_inst_list_next, mono_inst_list_prev): New instruction
13857         list handling interfaces.
13858         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13859         list head 'ins_list'.
13860         (MonoInst): Replace next pointer with list head 'node'.
13861         (MonoCallInst): Make 'out_args' a MonoInstList.
13862         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13863         (MonoCompile): Delete reverse_inst_list and
13864         reverse_inst_list_len.
13865         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13866         mono_arch_lowering_pass, mono_arch_local_regalloc,
13867         mono_arch_output_basic_block, mono_arch_emit_prolog):
13868         Convert to new instruction lists.
13869         (insert_after_ins): Delete.
13870         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13871         instruction lists.
13872         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13873         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13874         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13875         mono_emulate_opcode, mono_emit_load_got_addr,
13876         inline_method, mono_method_to_ir, mono_print_bb_code,
13877         print_dfn, decompose_pass, nullify_basic_block,
13878         replace_out_block_in_code, remove_block_if_useless,
13879         merge_basic_blocks, move_basic_block_to_end,
13880         try_unsigned_compare, optimize_branches, mono_print_code,
13881         mini_select_instructions, remove_critical_edges): Likewise.
13882         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13883         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13884         mono_arch_output_basic_block, mono_arch_emit_prolog):
13885         Likewise.
13886         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13887         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13888         mono_arch_output_basic_block): Likewise.
13889         (inst_list_prepend, insert_after_ins): Delete.
13890         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13891         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13892         instruction lists.
13893         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13894         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13895         mono_arch_emit_prolog): Likewise.
13896         * cfold.c (mono_constant_fold): Likewise.
13897         * liveness.c (visit_bb, mono_analyze_liveness,
13898         optimize_initlocals): Likewise.
13899         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13900         * graph.c (mono_draw_code_cfg): Likewise.
13901         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13902         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13903         mono_ssa_cprop): Likewise.
13904         * abcremoval (get_relations_from_previous_bb, process_block):
13905         Likewise.
13906         * local-propagation (mono_cprop_invalidate_values,
13907         mono_local_cprop_bb): Likewise.
13908         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13909         peephole_pass, mono_arch_output_basic_block,
13910         mono_arch_emit_prolog): Likewise.
13911         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13912         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13913         mono_arch_emit_prolog): Likewise.
13914         (insert_after_ins): Delete.
13915         * aliasing.c (print_code_with_aliasing_information,
13916         mono_build_aliasing_information, mono_aliasing_deadce):
13917         Convert to new instruction lists.
13918         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13919         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13920         mono_arch_local_regalloc, mono_arch_output_basic_block):
13921         Likewise.
13922         (insert_after_ins): Delete.
13923         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13924         peephole_pass, mono_arch_output_basic_block): Convert to
13925         new instruction lists.
13926         * mini-codegen (InstList, inst_list_prepend,
13927         insert_after_ins): Delete.
13928         (insert_before_ins, get_register_force_spilling,
13929         get_register_spilling, free_up_ireg, free_up_reg,
13930         create_copy_ins, create_spilled_store, alloc_int_reg,
13931         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13932         to new instruction lists.
13933         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13934         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13935         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13936         (insert_after_ins): Delete.
13937         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13938         mono_arch_local_regalloc, mono_arch_output_basic_block,
13939         mono_arch_call_opcode): Convert to new instruction lists.
13940         (insert_after_ins): Delete.
13941         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13942         peephole_pass, mono_arch_output_basic_block,
13943         mono_arch_emit_prolog): Convert to new instruction lists.
13944
13945 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13948
13949         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13950         Fixes #353182.
13951
13952         * Makefile.am (version.h): Make this work with non-bash shells.
13953
13954 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13955
13956         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13957
13958 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13959
13960         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13961         the InitializeArray optimization.
13962
13963 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * mini.c driver.c: Don't include os/gc_wrapper.h.
13966
13967 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * mini.c (print_jit_stats): Print GC statistics if available.
13970
13971 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13972
13973         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13974
13975 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13976
13977         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13978
13979 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13980
13981         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13982         
13983         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13984
13985         * driver.c (mono_main): Ditto.
13986
13987 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13988
13989         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13990
13991         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13992         in the vtable can't be encoded.
13993         (compile_method): Ditto.
13994
13995 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13998         defined.
13999
14000         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14001         lmf->rbp.
14002
14003         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14004         the top LMF entry belongs to the current method.
14005
14006         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14007
14008 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14011         
14012         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14013
14014         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14015
14016         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14017
14018         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14019
14020         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14021         implementation.
14022
14023         * basic-float.cs: Add an ulong->double cast test.
14024
14025 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14026
14027         * mini.c (mono_method_to_ir): Fix a warning.
14028
14029 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * mini-ops.h: Add OP_SWITCH.
14032
14033         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14034         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14035
14036 2007-12-11  Geoff Norton  <gnorton@novell.com>
14037
14038         * mini-s390x.c: Minor change to the MAX() define to allow
14039         it to compile with other gcc versions.
14040
14041 2007-12-11  Geoff Norton  <gnorton@novell.com>
14042
14043         * cpu-s390x.md:
14044         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14045
14046 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14047
14048         exceptions-arm.c (mono_arch_get_restore_context): Restore
14049         the frame pointer.
14050
14051         exceptions-arm.c (throw_exception): Save the frame pointer.
14052         This is a partial fix for #323747. Only the client side is
14053         fixed.
14054
14055 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14056
14057         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14058         was using an unrelated variable to log the class which
14059         needed the cctor to be called. This was crashing on arm.
14060
14061 2007-12-09  Robert Jordan  <robertj@gmx.net>
14062
14063         * mini-x86.c (mono_arch_emit_epilog):
14064         Consider all kinds of 64-bit types. Fixes #323114.
14065
14066 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14069
14070 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14073
14074 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14075
14076         * mini.c: run type ctor before allocating an object, not only
14077         when running it's constructor method (fixes at least part of bug #342507).
14078
14079 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14080         
14081         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14082         
14083         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14084         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14085         function.
14086
14087         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14088         mono_generic_class_init_trampoline () the same as it is done with the other
14089         trampolines.
14090
14091         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14092         aot-runtime.c aot-compiler.c: Implement AOT support.    
14093
14094 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14095
14096         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14097         build for archs which don't have the vtable trampoline defined
14098         yet.
14099
14100 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14103
14104         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14105
14106         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14107
14108         * tramp-<ARCH>.c: Use the new helper function.
14109
14110 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14111
14112         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14113         trampoline call, which takes a vtable argument.
14114
14115         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14116         OP_TRAMPCALL_VTABLEs like other calls.
14117
14118         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14119         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14120         call.  Implemented a support function which fetches the vtable
14121         from a register set.
14122
14123         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14124         Implemented a generic class init trampoline, using the
14125         OP_TRAMPCALL_VTABLE opcode.
14126
14127         * mini.c: Implemented static field access when sharing generic
14128         code.  This implies initing the class using the new
14129         OP_TRAMPCALL_VTABLE call.
14130
14131 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14132
14133         * mini.c: Don't compile methods with sharing enabled if their
14134         classes are disabled for sharing.
14135
14136 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14137
14138         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14139         opcodes. Fixes #346563.
14140
14141         * objects.cs: Add a new test.
14142
14143         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14144
14145         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14146         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14147
14148 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14149
14150         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14151
14152 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14155         code stream.
14156
14157 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14158
14159         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14160
14161         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14162         optimization in the AOT case.
14163         
14164 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14165
14166         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14167         
14168         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14169
14170         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14171
14172         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14173
14174         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14175         is created by the inlined delegate ctor.
14176
14177         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14178
14179         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14180
14181 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14182
14183         * cpu-x86.md: Fix the length of ckfinite.
14184
14185 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14188         
14189         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14190         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14191
14192         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14193
14194         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14195         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14196
14197 2007-11-28  Martin Baulig  <martin@ximian.com>
14198
14199         * mini-x86.c
14200         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14201         after creating the trampoline.
14202
14203 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14204
14205         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14206
14207         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14208         the same version.
14209
14210         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14211         instead of the calling method to help AOT.
14212
14213         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14214
14215 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14218         is defined.
14219
14220 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14223         
14224         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14225         (encode_method_ref): No need to handle generic method definitions specially.
14226
14227         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14228
14229         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14230         decode_klass_info.
14231
14232         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14233         encode_klass_info.
14234         (compile_method): Enable generic sharing.
14235
14236 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14239         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14240
14241         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14242         generic code.
14243
14244         * mini-trampolines.c: Fix a warning.
14245
14246         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14247         NEW_PCONST.
14248         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14249         (generic_class_is_reference_type): Remove unused function.
14250
14251         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14252         in the generic vtable trampoline case.
14253
14254         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14255         
14256         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14257         return an AOT method based on a vtable slot.
14258
14259         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14260
14261         * mini.c (mini_get_vtable_trampoline): Export this.
14262
14263 2007-11-22  Martin Baulig  <martin@ximian.com>
14264
14265         * debug-debugger.h
14266         (MonoDebuggerInfo): Move `debugger_version' up.
14267
14268 2007-11-22  Martin Baulig  <martin@ximian.com>
14269
14270         * mini-amd64.c
14271         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14272
14273         * mini-trampolines.c
14274         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14275         after compiling the method.
14276
14277 2007-11-20  Martin Baulig  <martin@ximian.com>
14278
14279         * debug-mini.c
14280         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14281         (mono_debugger_remove_breakpoint): Likewise.
14282         (mono_debugger_check_breakpoints): Likewise.
14283
14284         * debug-debugger.c: Implement the new breakpoint interface here.
14285
14286 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14289         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14290
14291         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14292
14293 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14296
14297         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14298         mini.c.
14299
14300         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14301         mini.c.
14302
14303         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14304         returning a vtype in a register.
14305
14306         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14307         here from the arch specific code.
14308
14309         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14310         mini.c.
14311
14312         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14313         (mono_arch_emit_prolog): Increment maximum prolog size.
14314
14315         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14316         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14317
14318         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14319         MonoGenericSharingContext.
14320
14321         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14322         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14323
14324 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14325
14326         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14327         which extract fields out of the runtime generic context.  Full
14328         sharing of the NEWARR opcode.
14329
14330 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14331
14332         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14333         --enable-minimal=ssa.
14334
14335 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14338         mono_marshal_get_delegate_invoke () signature change.
14339
14340 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14341
14342         * mini.c: Removed the shared context in favor of the generic
14343         sharing context.  Allocate the MonoJitInfo structure with room for
14344         the generic sharing context if it's needed.
14345
14346         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14347         domain-internals.h now.
14348
14349         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14350
14351         * generic-sharing.c: Several changes for working without a shared
14352         context and instead operating on open types instead.
14353
14354 2007-11-12  David S. Miller  <davem@davemloft.net>
14355
14356        * inssel-sparc.brg: Fix double instruction emit.
14357
14358 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14359
14360         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14361         Get/Set/Address methods.
14362         
14363         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14364         mono_marshal_get_delegate_invoke signature change.
14365
14366 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14367
14368         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14369         This can happens with dynamic methods. Fixes the other bug in #322722.
14370
14371 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14372
14373         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14374         BX call sequence.
14375
14376         * mini-arm.c (arm_patch): Implement patching of BX call
14377         sequence. Fixes one of the bugs in #322722.
14378
14379 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14380
14381        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14382        under Linux.  We only need to flush every 32-byte cache line.    
14383
14384 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14385
14386         * mini.c:
14387         move_basic_block_to_end: Add branches when needed, eventually creating
14388         a new BB.
14389         optimize_branches: added a parameter that tells if it's ok to create
14390         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14391         and avoid calling move_basic_block_to_end when it's not ok.
14392         Fixes bug 318677.
14393
14394 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14395
14396         * mini.c: Abort inlining call to InitializeArray if something
14397         looks wrong.  Let the icall handle it, which now has proper safety
14398         checks.
14399
14400 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14401
14402         * mini.c (mono_spill_call): add support for soft-float.
14403
14404         * mini.c (mono_method_to_ir): add support for soft-float
14405         to inlined functions that return float.
14406
14407         * mini.c (mono_method_to_ir): add support for soft-float
14408         to cee_stsfld opcode on float fields.
14409
14410 2007-11-05  Geoff Norton  <gnorton@novell.com>
14411
14412         * mini-x86.h: Fix the structure access for X86 Leopard.
14413
14414
14415 2007-11-05  Martin Baulig  <martin@ximian.com>
14416
14417         * mini-trampolines.c
14418         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14419         after compiling the method to notify the debugger.
14420
14421 2007-11-05  Martin Baulig  <martin@ximian.com>
14422
14423         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14424
14425 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14428         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14429
14430 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14433         native-to-managed wrappers.
14434         
14435 2007-11-01  Geoff Norton  <gnorton@novell.com>
14436
14437         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14438         members.
14439
14440 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14441
14442         * mini.c, mini-x86.c: when getting back from unmanaged code
14443         to managed via a marshaled delegate we also need to set the
14444         right domain.
14445
14446 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14447
14448         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14449         for amd64.
14450
14451 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14452
14453         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14454         let the debugger or other external agents to tell the JIT when
14455         a sw breakpoint has been inserted in the code that the JIT needs
14456         to be able to inspect.
14457
14458 2007-10-31  Martin Baulig  <martin@ximian.com>
14459
14460         * debug-debugger.h
14461         (MonoDebuggerInfo): Remove `runtime_class_init'.
14462
14463 2007-10-30  Martin Baulig  <martin@ximian.com>
14464
14465         * debug-mini.h
14466         (mono_debugger_thread_created): Added `MonoThread *' argument.
14467         (mono_debugger_extended_notification): New public method.
14468         (mono_debugger_trampoline_compiled): New public method.
14469
14470         * debug-mini.c
14471         (MonoDebuggerThreadInfo): Added `thread' and
14472         `extended_notifications' fields.
14473
14474         * debug-debugger.c
14475         (debugger_executable_code_buffer): New static variable.
14476
14477         * debug-debugger.h
14478         (MonoDebuggerInfo): Added `executable_code_buffer',
14479         `executable_code_buffer_size', `breakpoint_info_area',
14480         `breakpoint_table' and `breakpoint_table_size'.
14481
14482 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14483
14484         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14485         that IP  either is an unused value or the vtable pointer. IMT 
14486         calls use vtable + offset now. Reduced by almost half the size
14487         of IMT entries.
14488
14489 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14490
14491         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14492         defines to access param registers. Replace long usage with
14493         gsize as sizeof(long) != sizeof(void*) on Win64.
14494
14495         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14496         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14497         instead of non-existant _GetAddressOfReturnAddress.
14498
14499         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14500         param registers. Save/restore %rdi and %rsi in MonoLMF.
14501
14502         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14503         param registers. Modify (throw_exception) signature to take 
14504         %rdi and %rsi on Win64. 
14505
14506         Code is contributed under MIT/X11 license.
14507
14508 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14509
14510         * helpers.c: unlink debugging output files.
14511
14512 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14513
14514         * mini.c: Move mono_create_ftnptr () to object.c.
14515
14516 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14517
14518         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14519         optional. This function can now be used to disassemble code generated
14520         outside the JIT such as trampolines and IMT thunks.
14521
14522         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14523
14524         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14525         vtable pointer from a ldr instruction.
14526
14527         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14528         new IMT call sequence.
14529
14530         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14531         call sequence for interface invocations.
14532
14533         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14534         for imt support. This function is empty since IMT on ARM requires no
14535         special handling on the IR side.
14536
14537         * mini-arm.c (mono_arch_find_imt_method): added, required for
14538         imt support.
14539
14540         * mini-arm.c (mono_arch_find_this_argument): added, required
14541         for imt support.
14542
14543         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14544         a ldr instruction to load a value stored in the code stream.
14545
14546         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14547         for imt support.
14548
14549
14550 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14551
14552         * mini.c (mini_init): Install the jump trampoline callback.
14553
14554 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14555
14556         * mini-trampolines.c: handle synchronized methods with the common
14557         vtable trampoline (bug #335601).
14558
14559 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14562
14563         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14564         64 bit platforms.
14565
14566         * mini-ia64.h mini-ia64.c: Add support for IMT.
14567
14568         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14569         prolog. Fixes #331958.
14570
14571 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14572
14573         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14574
14575 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14576
14577         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14578         trampoline.
14579
14580 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14581
14582         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14583         trampoline.
14584
14585 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14586
14587         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14588         trampoline.
14589
14590 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-trampolines.c: changed the magic rampoline to understand
14593         the common vtable trampoline method: the method to invoke is
14594         determined by the vtable displacement of the call.
14595
14596 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.c, mini.h: register the common vtable trampoline if the
14599         architecture supports it.
14600
14601 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14602
14603         * cpu-amd64.md: use the correct max length for tls_get.
14604
14605 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14606
14607         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14608         CEE_STELEM_ANY. Fixes #333696.
14609
14610 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14611
14612         * exceptions-x86.c: provide more graceful handling of the case where
14613         we followed a bogus function pointer from managed code (bug #332866).
14614
14615 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14616
14617         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14618         replaces the generic_shared flag and will carry more information
14619         in the future.
14620
14621         * generic-sharing.c: Added mini_type_stack_size() which allows
14622         allows open types if given a generic sharing context.
14623         mini_get_basic_type_from_generic() takes a
14624         MonoGenericSharingContext* instead of a MonoCompile* now.
14625
14626         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14627         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14628         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14629         changes above.  Just passing arguments through to the right
14630         places.
14631
14632 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14633
14634         * mini-arm.c: unify the call emission to emit_code_seq().
14635
14636 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14637
14638         * tramp-arm.c: reduced the trampoline size.
14639
14640 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14641
14642         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14643         variable handling out of arch-specific code.
14644
14645 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14646
14647         * mini-arm.c: implemented fast delegate dispatch.
14648
14649 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14652         that fp elimination is turned off if the space required by locals is too
14653         big. Fixes #331958.
14654
14655 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14656
14657         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14658         ARM to the new style trampoline.
14659
14660 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14661
14662         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14663
14664         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14665
14666 2007-10-09  Martin Baulig  <martin@ximian.com>
14667
14668         * debug-debugger.h
14669         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14670         `field_info_offset_offset'.     
14671
14672 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14673
14674         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14675         removed more internal usage of the r11 register and made it available
14676         to the register allocator.
14677
14678 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14679
14680         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14681         when sharing generics and treat type variables as references.
14682
14683 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini-ppc.c: started removing the internal uses of register r11
14686         to eventually allow the register allocator to manage it as an
14687         additional available register.
14688
14689 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14690
14691         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14692
14693 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14694
14695         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14696         specific trampolines as they are not performance critical as a jump
14697         target (maybe align as before only for AOT code?). This saves about
14698         200 KB of native code on x86 for monodevelop startup.
14699
14700 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14701
14702         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14703         monodevelop startup.
14704
14705 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14706
14707         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14708
14709         * mini-sparc.h mini-sparc.c: Implement IMT support.
14710
14711         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14712         its smaller and doesn't clobber sparc_g1.
14713
14714         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14715
14716 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14717
14718         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14719
14720 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14721
14722         * mini-ppc.c: implemented fast delegate invocation.
14723
14724 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14725
14726         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14727
14728 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14729
14730         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14731         code to the new style trampoline in preparation for IMT support.
14732
14733 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14734
14735         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14736         systems already. This also reduces the specific trampiline sizes and
14737         prepares for the use of r12 as the IMT identifier register.
14738
14739 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14740
14741         * mini-mips.h: endianess fix (simplified from a patch by
14742         Thomas Kunze <thommy@tabao.de>, bug #323737).
14743
14744 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14745
14746         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14747         to access ucontext fields and enable netbsd support
14748         (partially from Magnus Henoch <mange@freemail.hu>).
14749
14750 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14751
14752         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14753         use the preprocessor from the CPP env var if it is set.
14754
14755 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14756
14757         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14758         code, before interface_offset gets used.
14759
14760 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14761
14762         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14763         mono_class_setup_vtable () before accessing klass->vtable.
14764
14765 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14766
14767         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14768         hackish.
14769
14770 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14771
14772         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14773         IMT slots (this saves hundreds of KB of memory in programs like
14774         IronPython and Monodevelop).
14775
14776 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14777
14778         * mini.c: print the delegate counter.
14779
14780 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * mini-x86.c: make it easier to enable the debugging code for IMT
14783         slots.
14784
14785 2007-09-28  Martin Baulig  <martin@ximian.com>
14786
14787         * debug-debugger.h
14788         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14789         `mono_method_klass_offset' and `mono_method_token_offset'.
14790
14791 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14792
14793         * mini.c: First generics sharing implementation.  Can only share
14794         in very simple cases.  If sharing doesn't work it falls back to
14795         dedicated compilation.
14796
14797         * mini.h: Flag in MonoCompile to specify whether generic
14798         compilation is shared.  Flags enum for marking which generic inst
14799         of a context is used.  Prototypes for helper functions.
14800
14801         * generic-sharing.c: Helper functions for generic method sharing.
14802
14803         * optflags-def.h: Optimization flag (gshared) for enabling generic
14804         method sharing added.
14805
14806         * Makefile.am: generic-sharing.c added.
14807
14808 2007-09-19 Daniel Nauck <dna@mono-project.de>
14809
14810         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14811
14812 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14813         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14814         fixes bug 325507.
14815
14816 2007-09-19  Martin Baulig  <martin@ximian.com>
14817
14818         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14819         mono_debug_cleanup() is now part of mono_cleanup().
14820
14821 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14822
14823         * driver.c (mono_main): Fix a warning.
14824
14825 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14826
14827         * aot-compiler.c: Optimize various parts when processing large assemblies.
14828         Fixes ##325568.
14829
14830         * mini.c (mono_patch_info_hash): Improve hash function.
14831
14832 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14833
14834         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14835         
14836         Code is contributed under MIT/X11 license.
14837
14838 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14839
14840         * mini.c (mini_init): Fix a leak.
14841
14842         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14843
14844 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14845
14846         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14847
14848 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14849
14850         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14851
14852 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14855         variance tests.
14856
14857         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14858
14859         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14860
14861         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14862
14863         * aot-runtime.c (decode_patch_info): Ditto.
14864
14865 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14866
14867         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14868         static case. Cache delegates in architecture specific code, 
14869         based on number of parameters.
14870         
14871         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14872         in architecture specific code, based on number of parameters.
14873         
14874         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14875         caching happen in architecture specific code now.
14876         
14877         Code is contributed under MIT/X11 license.
14878
14879 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14880
14881         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14882         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14883         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14884
14885         Code is contributed under MIT/X11 license.
14886
14887 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14888         * mini.c: (mono_thread_abort) Fixed bug #82416.
14889
14890 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14891
14892         * mini.: hook the new managed GC allocation feature into the JIT.
14893
14894 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini.c: implementation for the new runtime tls opcode.
14897
14898 2007-09-11  Martin Baulig  <martin@ximian.com>
14899
14900         * debug-debugger.h
14901         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14902         `mono_method_inflated_offset'.
14903
14904 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14905
14906         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14907         async exceptions into a method.
14908
14909         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14910         purpose of testing whenever the unwinder works at every instruction.
14911
14912 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14913
14914         * mini.c: check accessibility of method used in ldftn (fixes
14915         bug #82635).
14916
14917 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14920
14921         * inssel.brg: Fix a warning.
14922
14923 2007-09-03  Martin Baulig  <martin@ximian.com>
14924
14925         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14926         now takes the `main_method' as argument.
14927
14928 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14929
14930         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14931
14932 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14933
14934         * driver.c: include the cil-coff.h header on Windows.
14935         
14936         Code is contributed under MIT/X11 license.
14937
14938 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14939
14940         * mini.c, driver.c: don't include the cil-coff.h header.
14941
14942 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14943
14944         * mini.c: flag places that needs fixes fo soft-float support.
14945
14946 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14947
14948         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14949         endian systems (partially from Dean Jenkins, bug #81924).
14950
14951 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14952
14953         * mini.c (check_linkdemand): Remove embedded reference object in
14954         call to LinkDemandSecurityException.
14955         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14956         with an IntPtr instead of a reference object.
14957
14958 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14959
14960         * mini.c (handle_initobj): Handle alignment properly.
14961
14962         * inssel.brg (mini_emit_memset): Ditto. 
14963
14964         * inssel.brg (mini_emit_memcpy): Ditto. 
14965
14966         * inssel-sparc.brg: Ditto.              
14967
14968         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14969
14970 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14971
14972         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14973         exceptions raised in unmanaged code. Fixes part of #82594.
14974
14975 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14976
14977         * mini.c (mono_method_to_ir), declsec.c
14978         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14979
14980 2007-08-22  Martin Baulig  <martin@ximian.com>
14981
14982         * debug-mini.h
14983         (MonoDebuggerThreadInfo): New typedef.
14984         (mono_debugger_thread_table): New global variable.
14985         (mono_debugger_thread_created): New public function.
14986         (mono_debugger_thread_cleanup): New public function.
14987
14988         * debug-debugger.h
14989         (MonoDebuggerInfo):
14990         - removed `get_current_thread' and `lookup_assembly'.
14991         - removed `data_table'.
14992         - added `thread_table'.
14993
14994         * mini.c
14995         (mono_thread_start_cb): Call mono_debugger_thread_created().
14996         (mono_thread_attach_cb): Likewise.
14997         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14998         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14999         initial domain.
15000
15001         * driver.c (mono_main): Move mono_debug_init() up, before calling
15002         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15003
15004 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15007         together when passing several arguments of type double (gives a small
15008         speedup and saves a few bytes of generated code).
15009
15010 2007-08-20  Jb Evain  <jbevain@novell.com>
15011
15012         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15013
15014 2007-08-20  Jb Evain  <jbevain@novell.com>
15015
15016         * mini.c (mono_method_to_ir): throw MethodAccessException
15017         and FieldAccessException instead of InvalidProgramException.
15018
15019 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15020
15021         * mini.c: CoreCLR security checks.
15022
15023         * mini.h: Removed MonoSecurityMode (moved to
15024         metadata/security-manager.h) and mono_security_mode global var
15025         (replaced by set/get functions in security-manager.h).
15026
15027         * driver.c: Added "core-clr-test" security mode for testing.  Used
15028         set-function for setting security mode.
15029
15030 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15031
15032         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15033         the new jit_info_table.
15034
15035         * driver.c: Test code for the new jit_info_table (enabled by the
15036         define MONO_JIT_INFO_TABLE_TEST).
15037
15038 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15041         detection of call <REG> instruction sequence. Fixes build on freebsd.
15042
15043 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * mini-exceptions.c: Fix a warning.
15046
15047 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15048
15049         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15050         stack overflow handling code on amd64 too.
15051
15052         * mini-exceptions.c (mono_setup_altstack): Make this use 
15053         mono_thread_get_stack_bounds ().
15054
15055         * mini-x86.h: Disable sigaltstack on solaris x86.
15056
15057 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15060
15061 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15062
15063         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15064
15065 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15066
15067         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15068
15069         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15070
15071 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15072
15073         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15074         due to alignment.
15075
15076 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15077
15078         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15079         to be emitted (bug #82281).
15080
15081 2007-08-01  Martin Baulig  <martin@ximian.com>
15082
15083         Merged the `debugger-dublin' branch.
15084
15085         * debug-debugger.h (MonoDebuggerInfo):
15086         Removed the `old_*' compatibility entries.
15087         Added `debugger_version' and `data_table'.
15088         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15089         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15090
15091         * debug-mini.c
15092         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15093         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15094         instead of a `gconstpointer'.
15095         (mono_debugger_insert_method_breakpoint): Return a
15096         `MonoDebugMethodAddressList *'.
15097
15098 2007-06-28  Martin Baulig  <martin@ximian.com>
15099
15100         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15101
15102 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15103
15104         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15105         __builtin_frame_address () since it is broken on older gcc versions.
15106
15107 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15108
15109         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15110         on the stack overflow handling and made the managed stack overflows
15111         catchable in most cases using soft guard pages.
15112         * exceptions-x86.c: added code to restore the protection in the soft
15113         guard pages at the end of exception handling.
15114
15115 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15118
15119 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15120
15121         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15122         exception handling.
15123
15124 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15125
15126         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15127         signal handling support until it has been ported to the new mechanism.
15128         * mini.c: fixed stack overflow detection and use the new
15129         architecture code  to handle signals on the altstack.
15130
15131 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15132
15133         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15134         stack overflows on the alt stack.
15135
15136 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15137
15138         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15139         stack overflows on the alt stack.
15140
15141 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15142
15143         * exceptions-ppc.c: cleanup preparing for altstack support.
15144
15145 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15146
15147         * exceptions-arm.c: cleanup preparing for altstack support.
15148
15149 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15150
15151         * mini.c (print_jit_stats): Output hazard pointer stats.
15152
15153 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15154
15155         * driver.c, mini.c: Replaced security mode flags with a single
15156         enum variable.
15157
15158 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15159
15160         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15161
15162 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15163
15164         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15165         (which doesn't do anything yet) for activating Core CLR
15166         (Silverlight) security.
15167
15168 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15169
15170         * mini-codegen.c: work around a possible gcc bug on arm.
15171
15172 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15173
15174         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15175         message for platforms that don't support AOT compilation.
15176
15177 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15178
15179         * mini.h, mini.c, driver.c: temporary smcs hack.
15180
15181 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15182
15183         * mini-arm.h, mini-arm.c: arm EABI fixes.
15184
15185 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15186
15187         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15188         case.
15189
15190         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15191         trampolines taking a method argument.
15192
15193         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15194
15195         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15196         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15197
15198         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15199         JIT compilation throws an exception. Fixes #82050.
15200
15201 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15202
15203         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15204         with the MONO_EXCEPTION_ defines.
15205
15206 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15207
15208         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15209         #82117.
15210         
15211         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15212         the cause of an assertion.
15213
15214 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15215
15216         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15217         removed.
15218
15219 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15220
15221         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15222         assert. Should fix #82103.
15223
15224 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15225
15226         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15227         here too. Fixes #82095.
15228
15229         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15230         addresses.
15231
15232         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15233
15234         * mini-amd64.h: Enable IMT for amd64.
15235         
15236         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15237
15238 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15239
15240         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15241
15242 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15243
15244         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15245         as soon as check_linkdemand sets an exception_type.
15246
15247 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15248
15249         * mini-x86.c: fixed offsets for IMT call sequence.
15250         * mini-x86.h: enable IMT again.
15251
15252 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15253
15254         * trace.c (mono_trace_enter_method): Decode MonoType too.
15255
15256         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15257
15258         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15259
15260         * mini-amd64.c: Add preliminary IMT implementation.
15261         
15262 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15263
15264         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15265         understand the new IMT-base interface invocation (thanks to
15266         Daniel Nauck for the report and the remote debugging session).
15267
15268 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15269
15270         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15271
15272 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15275
15276 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15277
15278         * mini-trampolines.c: implement AOT IMT support.
15279         * mini-x86.h: enable IMT support for wider testing.
15280
15281 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * inssel.brg (emit_imt_argument): Add aot support here.
15284
15285         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15286
15287 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15290         of the IMT implementation, partially from massi, with my
15291         implementation of the bsearch sequence. Disabled by default until
15292         the AOT code is implemented.
15293
15294 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15297
15298         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15299
15300 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15301
15302         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15303         arch-independent IMT JIT code from Massimiliano
15304         Mantione (massi@ximian.com) with small cleanups from me.
15305
15306 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15307
15308         * Makefile.am: fix svn invocation to get the svn revision to be
15309         independent of the local language (build fix).
15310
15311 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15312
15313         * mini.c (inline_method): Reset cfg->exception_type if the
15314         inlining is aborted.  Fixes: 82049.
15315
15316 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15317
15318         * mini.c: remove assert from exception handling code when exception_ptr
15319         is not set.
15320
15321 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15322
15323         * mini.c (mono_codegen): Add an assert.
15324
15325         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15326         enter and leave code.
15327         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15328
15329 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15330
15331         * mini-ppc.c: fixed memory corruption for localloc(0)
15332         (bug #81852).
15333
15334 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15335         
15336         * mini.c: Fix warnings.
15337
15338 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15341         to emit better double->int conversions.
15342
15343 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15344
15345         * mini.c: the provided Min/Max optimizations are valid for unisgned
15346         ints.
15347
15348 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15349
15350         * 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
15351
15352 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15353
15354         * mini.c (mono_running_on_valgrind): Add support for reporting the
15355         method and  its boundaries to valgrind.
15356
15357 2007-06-28  Martin Baulig  <martin@ximian.com>
15358
15359         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15360
15361 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15362
15363         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15364
15365         * generic.2.cs: Add new test case.
15366
15367 2007-06-25  Martin Baulig  <martin@ximian.com>
15368
15369         Merged the `debugger-dublin' branch.
15370
15371         * debug-mini.c
15372         (mono_debugger_insert_method_breakpoint): New public method.
15373         (mono_debugger_remove_method_breakpoint): Likewise.
15374         (mono_debugger_check_breakpoints): New static method.
15375         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15376
15377         * debug-debugger.h (MonoDebuggerInfo):
15378         Renamed (to keep backward compatibility in the vtable):
15379         `insert_breakpoint' -> `old_insert_breakpoint'.
15380         `remove_breakpoint' -> `old_remove_breakpoint'.
15381         `create_string' -> `old_create_string'.
15382         `lookup_class' -> `old_lookup_class'.
15383         `lookup_type' -> removed; changed into a dummy field.
15384         `lookup_assembly' -> `old_lookup_assembly'.
15385         Added (same functionality, but different signature):
15386         `create_string', `lookup_class', `lookup_assembly'
15387         Added new:
15388         `get_method_addr_or_bpt', `remove_method_breakpoint',
15389         `runtime_class_init'.
15390
15391         * debug-debugger.c: Merged the `debugger-dublin' branch.
15392
15393 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15394
15395         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15396         well.
15397         (peephole_pass): Likewise.
15398
15399 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15400
15401         * driver.c: hopefully make setaffinity work also for ancient
15402         versions of linux.
15403
15404 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15405
15406         * driver.c : win32 build fix.
15407
15408 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15409
15410         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15411         processor if it is set.
15412
15413 2007-06-21  Martin Baulig  <martin@ximian.com>
15414
15415         * debug-mini.h: New file.
15416
15417         * debug-mini.c
15418         (mono_debugger_insert_breakpoint_full): Moved here from
15419         ../metadata/mono-debug-debugger.c.
15420         (mono_debugger_remove_breakpoint): Likewise.
15421         (mono_debugger_breakpoint_callback): Likewise.
15422
15423 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15424
15425         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15426         changes in MonoGenericClass.
15427
15428 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15431
15432 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15433
15434         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15435         removal of MonoGenericMethod.
15436
15437 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15438
15439         * mini-exceptions.c: hooks for the exception events profiling API.
15440
15441 2007-06-14  Randolph Chung  <tausq@debian.org>
15442
15443         * Makefile.ma: Add hppa target.
15444         * mini-arch.h: Include mini-hppa.h
15445         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15446         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15447         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15448
15449 2007-06-14  Randolph Chung  <tausq@debian.org>
15450
15451         * inssel.brg: Add rules for "chained" compare-branch operations so that
15452         a single compare op can affect multiple branches.  Adjust cost for
15453         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15454         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15455         cost for some rules so that they can more easily be overridden by
15456         per-arch rules (with fixes from lupus).
15457         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15458
15459 2007-06-13  Randolph Chung  <tausq@debian.org>
15460
15461         * mini-ops.h: Reorder branch ops so that they match the order of the
15462         corresponding CEE_* ops.  The code expects them this way.
15463         Add new ops for HPPA target.
15464         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15465
15466 2007-06-13  Randolph Chung  <tausq@debian.org>
15467
15468         * mini-exceptions.c: Handle cases where the stack grows towards
15469         larger addresses.
15470         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15471
15472 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15473
15474         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15475         counter.
15476         * driver.c: explain where a non-matching corlib is found.
15477
15478 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15479
15480         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15481
15482 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15483
15484         * mini-exceptions.c: Generate a method profile leave event during
15485         an exception to ensure that the profiler gets notified.
15486
15487 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15490         branch.
15491
15492         * cpu-amd64.md: Add long_and/or/xor opcodes.
15493
15494 2007-06-06  Wade Berrier  <wberrier@novell.com>
15495
15496         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15497         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15498         length of instruction shr_imm (expected 8, got 10)
15499
15500 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15501
15502         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15503
15504 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15505
15506         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15507         MonoInternalHashTable again (fixed bug in the internal hash table
15508         code).
15509
15510 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15511
15512         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15513         Have to figure out what makes it crash the SWF regression.
15514
15515 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15516
15517         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15518
15519 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15520
15521         * mini.c: optimize out the type check when storing null in a
15522         reference array.
15523
15524 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15525
15526         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15527         MonoInternalHashTable.
15528
15529 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15530
15531         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15532         signed integer methods.
15533
15534 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15537         permanently since the current approach doesn't work.
15538
15539 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15542         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15543
15544 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15545
15546         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15547         the sreg2==rdx case.
15548         
15549         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15550         account if it contains a rex prefix.
15551         (peephole_pass): Handle OP_FMOVE as well.
15552
15553 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15556         as it causes regressions.
15557
15558 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15559
15560         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15561         static case as well.
15562
15563         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15564
15565         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15566         (mono_arch_get_this_arg_from_call): Ditto.
15567
15568         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15569
15570         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15571         invoke_impl field.
15572
15573         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15574         (mono_arch_get_this_arg_from_call): Ditto.
15575
15576         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15577         
15578         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15579         try to create optimized invoke code and use that for further invocations. 
15580         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15581
15582         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15583
15584 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15585
15586         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15587         sealed classes or methods.
15588         *devirtualization.cs: tests for the new optimization
15589
15590 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15591
15592         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15593         by the update_volatile () function.
15594
15595 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15596
15597         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15598         require it.
15599
15600         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15601
15602 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15603
15604         * mini.c: Add configure checks for header files.
15605         * mini-x86.c: Add configure checks for header files.
15606         * trace.c: Add configure checks for header files.
15607         * aot-runtime.c: Add configure checks for header files.
15608         * aot-compiler.c: Add configure checks for header files.
15609         * driver.c: Add configure checks for header files.
15610         * mini-codegen.c: Add configure checks for header files.
15611         
15612         Code is contributed under MIT/X11 license.
15613
15614 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15615
15616         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15617         icompare_imm -128 + op_iclt. Fixes #81703.
15618
15619 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15620
15621         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15622
15623 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15624
15625         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15626         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15627         so that all isinst checks now use "interface_bitmap".
15628
15629 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * cpu-amd64.md (jmp): Fix a warning.
15632
15633         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15634
15635         * basic.cs: Add new regression test.
15636
15637         * basic.cs: Remove test which is now in basic-long.cs.
15638
15639         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15640
15641         * basic-long.cs: Add new test.
15642         
15643 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15644
15645         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15646
15647 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15648
15649         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15650
15651         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15652         places.
15653         
15654         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15655         throwing code a bit.
15656
15657         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15658         the exception throwing code a bit.
15659
15660         * mini-x86.c (get_call_info): Allocate result from a mempool.
15661
15662 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15663
15664         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15665
15666         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15667
15668         * mini.h (MonoCompile): Add 'token_info_hash' field.
15669
15670         * mini.c: Save token->method associations during compilation so the AOT 
15671         compiler can use it.
15672         
15673         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15674         which reference generic classes and methods.
15675
15676 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15677
15678         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15679
15680         * aot-compiler.c (compile_method): Fix a typo in a comment.
15681
15682         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15683
15684         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15685         everything generic.
15686
15687         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15688
15689 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15690
15691         * mini.h (MonoCompile): Add 'args' field.
15692
15693         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15694         into cfg->args.
15695
15696         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15697
15698 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15701
15702         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15703
15704         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15705         opcodes for some opcodes.
15706
15707         * mini.h *.brg *.c: Use the new opcodes.
15708
15709 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15710
15711         * mini.h: Bumped aot revision.
15712
15713         * inssel.brg: modified code generation of type checks for interfaces
15714         to use the new "MonoClass.interface_bitmap" instead of the old
15715         "MonoClass.interface_offsets".
15716
15717 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15718
15719         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15720
15721 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15722
15723         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15724         64 bit platforms.
15725
15726 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15727
15728         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15729
15730 2007-04-27  Wade Berrier  <wberrier@novell.com>
15731
15732         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15733         mini.h) to fix build.
15734
15735 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15738         
15739         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15740         causes the corlib unit tests to fail.
15741
15742 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15745
15746         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15747
15748         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15749         opcodes to the comparison relations.
15750
15751         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15752         opcodes to their types.
15753         
15754         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15755
15756         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15757         it in cfg->arch.cinfo.
15758
15759         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15760
15761         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15762         cfg->cil_offset_to_bb.
15763
15764 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15767         created becase of initlocals.
15768
15769 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15772         Sergey Tikhonov <tsv@solvo.ru>.
15773
15774 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15775
15776         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15777
15778 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15779
15780         * cpu-s390.md (break): Correct the length of break instruction.
15781
15782 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15783
15784         * mini.c: fix a couple of soft-float issues and comments.
15785
15786 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15787
15788         * trace.c (is_filenamechar): - is also a filename char.
15789
15790 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15791
15792         * mini-s390.c: Correct checking for enum type in return value processing.
15793
15794 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15795
15796         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15797         (version.h): Makefile is in the build directory.
15798
15799 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15800
15801         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15802
15803 2007-04-11  Martin Baulig  <martin@ximian.com>
15804
15805         * mini.c (can_access_member): Fix handling of generic classes;
15806         fixes #81259.
15807
15808 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15811
15812 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15813
15814         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15815
15816 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15817
15818         * mini-codegen.c: make sure the right spill amount is
15819         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15820
15821 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15822
15823         * mini-ppc.c: fixes for the fp_branch_nan test.
15824
15825 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15826
15827         * basic.cs: Comment out new test which still fails on ia64.
15828
15829 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15830
15831         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15832
15833 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15834
15835         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15836
15837 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15838
15839         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15840         on 64 bit machines. Fixes part of #80738.
15841
15842         * basic.cs: Add regression test.
15843
15844 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * inssel.brg basic.cs: Revert previous change to fix build.
15847
15848         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15849         platforms.
15850         
15851         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15852
15853         * basic.cs: Add new regression test.
15854
15855 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15858         many arguments.
15859
15860 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15861
15862         * cpu-s390x.md: Correct length of break instruction.
15863
15864 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15865
15866         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15867         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15868
15869 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15870
15871         * *.c: Begin WIN64 port.
15872         * mini.c:  Use correct register in profiler.
15873         * mini-amd64.c: No inline assembly on Win64.
15874         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15875         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15876         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15877         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15878         mono_arch_ip_from_context for Win64.
15879         
15880         Contributed under MIT/X11 license.
15881
15882 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15883
15884         * exceptions-amd64.c (seh_handler): Ditto.
15885
15886         * exceptions-x86.c (seh_handler): Fix a memory leak.
15887
15888 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15889
15890         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15891         mini-s390x.c: fixed peephole optimizations to deal
15892         correctly with 1 and 2 byte reload avoidance.
15893
15894 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15895
15896         * cpu-s390.md, cpu-s390x.md: update localloc length.
15897
15898 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15899
15900         * cpu-g4.md: added missing descriptions.
15901
15902 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15903
15904         *  Makefile.am: Add support so the tail tests are not executed on
15905         PowerPC as that is a known limitation of the PowerPC port.
15906
15907 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15908
15909         * runmdesc.bat:  Move to msvc directory.
15910         
15911 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15912
15913         * runmdesc.bat:  Run executable that was produced by the current
15914         target and sent via an argument.
15915         
15916 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15917
15918         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15919         #81102.
15920
15921         * generics.2.cs: Add regression test.
15922
15923 2007-03-09  Wade berrier  <wberrier@novell.com>
15924
15925         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15926
15927 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15928
15929         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15930         AOT code depends on this.
15931
15932 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15933
15934         * mini.c: more precise tracking of types in the eval stack
15935         (part of fix for bug #81044).
15936
15937 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15938
15939         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15940
15941         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15942
15943 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15944
15945         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15946
15947         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15948
15949 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15950
15951         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15952         a pointer on 64 bit systems. Fixes #80190.
15953
15954         * iltests.il: Add new regression test.
15955
15956 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15957
15958         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15959
15960 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15961
15962         * trace.c: Remove an erroneous alignemnt check when tracing.
15963           Fixes --trace on OSX86.
15964
15965 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15966
15967         * mini-$(arch).h: initialize SP in context for all the archs.
15968
15969 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15970
15971         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15972         regressions in the thread tests.
15973
15974 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15977         - fixed implementation of LOCALLOC opcode
15978         - implemented non-un compare for floats
15979         - code cleanup
15980         - implementation of FDIV and CKFINITE opcodes
15981         - fixes for latest mono updates
15982         - additional arch opcodes
15983
15984 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15985
15986         * Makefile.am: simplify and merge rules for cross-compilation.
15987
15988 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15989
15990         * local-propagation.c: Actually *apply* the fix for bug 80591...
15991
15992 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15993
15994         * mini-exceptions.c: backuot part of the last change
15995         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15996
15997 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15998         * inssel.brg: Fix bug 59286.
15999
16000
16001 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16002
16003         * mini-exceptions.c: patch from Zoltan to correctly check for
16004         stack boundaries (using the stack register, not the frame register),
16005         fixes bugs #80724, #79717.
16006
16007 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16008
16009         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16010         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16011
16012         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16013         presence of frame pointer elimination.
16014
16015 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16016         
16017         * mini-x86.h: NetBSD UCONTEX_REG defines.
16018
16019 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16020
16021         * inssel-amd64.brg: Fix amd64 build.
16022
16023 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16026         on amd64.
16027
16028 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16031         ends.
16032
16033         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16034
16035 2007-01-30 Mark Mason <mason@broadcom.com>
16036
16037            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16038            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16039            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16040            beginning support for CEE_JMP [not quite working yet]
16041            * tramp-mips.c: LMF handling now works
16042         
16043 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16044
16045         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16046
16047         * mini.h (NULLIFY_INS): New macro.
16048
16049 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16050
16051         * mini.c: statistical profiler fix for windows, patch
16052         from Tor Lillqvist (tml@novell.com).
16053
16054 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16055         * local-propagation.c: Fix bug 80591.
16056
16057 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16058
16059         * Makefile.am: put back the --export-dynamic option as with
16060         the previous gmodule flags (thanks to Robert Jordan).
16061
16062 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16063
16064         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16065
16066         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16067         simplify and speed up the local register allocator. Also rename some fields
16068         like iassign->vassign.
16069         
16070         * regalloc.c: Remove some functions which are no longer used since their
16071         inlined version is in mini-codegen.c.
16072         
16073         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16074
16075         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16076
16077 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16078
16079         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16080         narrowing. Fixes #80622.
16081
16082         * iltests.il: Add new regresssion test. 
16083
16084 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16085
16086         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16087         debug-debugger.c, debug-debugger.h: warning fixes.
16088         * driver.c: updated copyright year and made it fit in one line.
16089
16090 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16091
16092         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16093
16094 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16097
16098         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16099
16100         * iltests.il: Add new test for bug #80507.
16101
16102 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16103
16104         * mini-arm.h: use soft-float also on vfp for now.
16105
16106 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16107
16108         * mini.c: fix some more soft-float issues.
16109
16110 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16111
16112         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16113
16114 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16115         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16116         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16117         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16118
16119 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16120
16121         * mini-arm.c: typo fix.
16122
16123 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16124
16125         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16126
16127 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16128
16129         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16130         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16131
16132         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16133
16134         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16135
16136         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16137         
16138         * inssel.brg: Fix a warning.
16139
16140         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16141
16142         * abcremoval.c ssa.c ssapre.c: Update after this change.
16143         
16144         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16145
16146         * dominators.c (df_set): Use mono_bitset_union_fast.    
16147
16148 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16149
16150         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16151         mini-codegen.c: reduce relocations and memory usage for the cpu
16152         description.
16153
16154 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16155
16156         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16157
16158         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16159         to reduce their size.
16160
16161 2007-01-19 Mark Mason <mason@broadcom.com>
16162
16163         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16164         * mini-mips.c: more configuration macros, support long conditional branches, additional
16165         asserts, fix epilog instrumentation.
16166         * mini-mips.h: use standard stack walk
16167         * cpu-mips.md: increase size of div, rem and conditional branches
16168         
16169 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16170
16171         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16172         to cpu spec data.
16173
16174 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16175
16176         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16177         (compile_method): Ditto.
16178
16179         * aot-runtime.c (decode_klass_info): Ditto.
16180
16181         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16182         needed by the code generated by inssel.brg. Also fix a warning.
16183
16184 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16185
16186         * mini.c: deal with enums that become genericinsts by
16187         being nested in a generic class (bug #79956).
16188
16189 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16190
16191         * mini.c: match the generic definition to check for
16192         private access with generic types (bug #78431).
16193
16194 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16195
16196         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16197         to make life easier for people cross-compiling that insist on not
16198         using scratchbox.
16199
16200 2007-01-17 Mark Mason <mason@broadcom.com>
16201
16202         * inssel-long.brg: patch to deal with mips missing flags
16203         * inssel-long32-mips.brg: implement overflow checks
16204         * insset-mips.brg: implement overflow checks
16205         * mini-mips.h: implement conditional exception handling
16206         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16207           Remove unused code, minor cleanups.
16208         * exceptions-mips.c: minor cleanups
16209         * mini-ops.h: add mips conditional exception ops
16210         * cpu-mips.md: add mips conditional exception ops
16211
16212         
16213 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16214
16215         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16216         to deal with mips missing of flags.
16217
16218 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16219
16220         * exceptions-ppc.c: execute fault handlers.
16221
16222 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16223
16224         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16225
16226 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16227
16228         * mini.c: handle also floating point values in initialize_array.
16229
16230 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16231
16232         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16233         array initialization and make it conditional on the intrins option.
16234
16235 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16236
16237         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16238         relocations and put the patch info names close to the enum definition.
16239
16240 2007-01-15 Mark Mason <mason@broadcom.com>
16241
16242         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16243
16244 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16245
16246         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16247
16248 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16249
16250         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16251
16252 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16253
16254         * Makefile.am: distribute the mips sources.
16255
16256 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16257
16258         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16259         directly.
16260
16261 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16262
16263         * cpu-x86.md: back out for now as this triggers other regressions.
16264
16265 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16266
16267         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16268         to eax:edx, so ecx can't get allocated to them (bug #80489).
16269
16270 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16271
16272         * mini.c, mini-exceptions.c: enabled running fault handlers
16273         (bug #80469).
16274
16275 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16276
16277         * driver.c: If nothing fail, do not use the string "failed",
16278         because it makes it very annoying to view test result logs on the
16279         web. 
16280
16281 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16282
16283         * debug-debugger.c (mono_debugger_main): Rename "main" to
16284         "main_method" to prevent a warning.
16285
16286         Remove a warning for unused field.
16287
16288 2006-12-28  Martin Baulig  <martin@ximian.com>
16289
16290         * debug-debugger.c
16291         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16292
16293 2006-12-22  Martin Baulig  <martin@ximian.com>
16294
16295         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16296         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16297         seperate `.mdb_debug_info' section, so we can access it from the
16298         debugger even if the binary is stripped.
16299
16300         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16301         from the `.mdb_debug_info' here to prevent the linker from
16302         removing that section.
16303
16304         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16305         mdb-debug-info64.s.
16306
16307 2006-12-19  Robert Jordan  <robertj@gmx.net>
16308
16309         * mini-x86: enable the code to return small structures in
16310         registers for FreeBSD as well. Fixes bug #80278.
16311         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16312
16313 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16314
16315         * mini-x86.c: align the stack when calling the profiler
16316         function instrumenting the prolog (on OSX).
16317
16318 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16319
16320         * mini.c: emit a break opcode where Debugger.Break () is called.
16321
16322 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16323
16324         * mini.c (mono_method_to_ir): Provide useful information on this
16325         assert, to prevent others from debugging like I did.
16326
16327 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16328
16329         * mini.c: enable code which was incorrectly commented
16330         (bug #80235).
16331
16332 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16333
16334         * mini-x86.c: enable on OSX, too, the code to return small
16335         structures in registers.
16336
16337 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16338
16339         * mini-x86.c: remove the use of the dynamic code manager here, too.
16340
16341 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16342
16343         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16344         mono_debugger_create_notification_function() to use
16345         mono_global_codeman_reserve () instead of a dynamic code manager.
16346
16347 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16348
16349         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16350         ves_array_element_address() jit icall and use a generated
16351         managed method instead (which is about 4 times faster for a rank 3
16352         array access).
16353
16354 2006-11-29  Mark Mason  <mason@broadcom.com>
16355
16356         * basic-calls.cs: additional tests for passing
16357         structures as function arguments.
16358
16359 2006-11-29  Mark Mason  <mason@broadcom.com>
16360
16361         * mini-mips.h: disable custom exception handling
16362         * mini-mips.c: throw/rethrow should use jalr to call
16363         exception stubs.  Fixed bug with passing structures
16364         by value. More support for tracing floating point
16365         functions.
16366
16367 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16368
16369         * mini.c: fixed typo in the soft-float ldind.r4 handling
16370         (bug #80086).
16371
16372 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16373
16374         * mini.c, mini.h, driver.c: added --runtime command line
16375         option to select a different runtime than the autodetected one.
16376         * jit.h: added API for embedders to initialize with a specific
16377         runtime version.
16378
16379 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16380
16381         * mini.c: handle also boxing of r4 values (bug #80024).
16382
16383 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16384
16385         * mini-ppc.c: force indirect calls until we reserve
16386         enough address space for all the generated code.
16387
16388 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16389
16390         * exceptions-arm.c: workaround bugs in the libc definition
16391         of struct ucontext.
16392
16393 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16394
16395         * inssel.brg: fixes from me and Mark Mason.
16396
16397 2006-11-23  Dick Porter  <dick@ximian.com>
16398
16399         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16400         semaphore display now we've fixed the initial value
16401
16402 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16403
16404         * inssel.brg: partially revert the last change to fix the build.
16405
16406 2006-11-21  Mark Mason  <mason@broadcom.com>
16407
16408         * inssel.brg: Add and use compare-and-branch macros to support
16409         architectures that do not have condition code registers (ie. MIPS).
16410         * *-mips.{c,brg,md}: Fix copyright statements
16411
16412 2006-11-20  Mark Mason  <mason@broadcom.com>
16413
16414         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16415         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16416         * mini.h: Added declaration for mono_print_ins()
16417         * mini-codegen.c: added ins_spec initializer for MIPS
16418         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16419         vreg to be virtual and hreg to be non-virtual.
16420         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16421         is not yet working/implemented correctly.
16422         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16423         non-static, fixup calls to print_ins() from other parts in the file.
16424
16425 2006-11-20  Mark Mason  <mason@broadcom.com>
16426
16427         * basic-calls.cs: added tests for passing structures as arguments
16428         to calls.
16429
16430 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16431
16432         * inssel-long32.brg: optimize signed division by power of two.
16433
16434 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16435
16436         * mini-arm.c: added support for interworking with thumb code
16437         (mono must be still be built using the ARM instruction encoding).
16438
16439 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16440
16441         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16442         verifier has different rules for it.   Fixes a few verifier issues
16443         in the test suite.
16444
16445         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16446         at the end, so people know what happened.
16447
16448 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16449
16450         * brach-opts.c: in optimize_exception_target() make sure we
16451         are in a catch clause (fixes bug #79871).
16452
16453 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16454
16455         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16456         more soft-float support fixes.
16457
16458 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16459
16460         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16461         that are passed half on the stack and half in registers.
16462
16463 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16466         more mips integration work from Mark E Mason 
16467         <mark.e.mason@broadcom.com>.
16468
16469 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16470
16471         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16472         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16473         tramp-mips.c: added sources for the mips port, not
16474         integrated in the build yet. Contributed by
16475         Mark E Mason <mark.e.mason@broadcom.com>.
16476
16477 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16478
16479         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16480
16481 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16482
16483         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16484         put the soft-float rules in its own file since it seems to
16485         break s390 compilation.
16486
16487 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * mini-arm.c: fixed wrnings.
16490
16491 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16494         inssel-arm.brg: ARM support for soft-float.
16495
16496 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16499         loads and stores of 32 bit fp values.
16500
16501 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16502
16503         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16504
16505         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16506         works. Fixes #79852 and #79463.
16507
16508 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16509
16510         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16511         more soft-float support WIP and fixes.
16512
16513 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16514
16515         * mini-arm.c: some VFP updates.
16516
16517 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * mini-exceptions.c: 0 is a valid local var offset in some
16520         architectures, don't assert (bug #78508).
16521
16522 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16523
16524         * exceptions-arm.c: fixed off by one error in stack walk code.
16525
16526 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16527
16528         * mini.h, mini.c: more precise tracking of type load exceptions.
16529
16530 2006-11-03  Robert Jordan  <robertj@gmx.net>
16531
16532         * Makefile.am: [WIN32] Add monow.exe target.
16533         * driver.c: [WIN32] Don't detach the console when debugging.
16534         Fixes bug #79797.
16535         
16536 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16537
16538         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16539
16540 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16541
16542         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16543
16544         * driver.c (mini_regression): Fix --regression with AOT.
16545
16546         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16547
16548 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16549
16550         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16551
16552         * mini-sparc.h: Don't use sigaction on sparc/linux.
16553
16554         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16555
16556         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16557
16558         * mini-exceptions.c: Add proper include files for getpid ().
16559
16560 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16561
16562         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16563         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16564         method.
16565
16566         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16567         name cache to reduce its size.
16568
16569         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16570
16571 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16572
16573         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16574         the mono_lmf TLS variable.
16575
16576         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16577         trampoline lmf frames.  
16578
16579         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16580
16581 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16582
16583         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16584         the mono_lmf TLS variable.
16585
16586         * mini-exceptions.c: Access the LMF structure through accessors.
16587
16588         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16589         variable instead of in jit_tls->lmf.
16590
16591         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16592         
16593         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16594         trampoline lmf frames.
16595
16596         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16597
16598 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16599
16600        * mini.c trace.c mini-x86.c: Revert these too.
16601         
16602        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16603        signature change.
16604
16605 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16606
16607         * genmdesc.c: removed now dead code.
16608
16609 2006-10-09  Robert Jordan <robertj@gmx.net>
16610
16611         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16612
16613 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * mini.h: do not leave gaps in the opcode values.
16616
16617 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16618
16619         * jit-icalls.h: flag functions as internal here, too.
16620
16621 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16622
16623         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16624         functions with the internal attribute.
16625
16626 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16627
16628         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16629
16630 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16631
16632         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16633         for soft-float.
16634
16635 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16638         tail calls as on other platforms.
16639
16640         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16641
16642         * iltests.il: Add a few tailcall tests.
16643
16644 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16645
16646         * driver.c: fix loop for old compilers (bug #79521).
16647
16648 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16649
16650         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16651
16652         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16653
16654         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16655         metadata without any code.
16656
16657         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16658         more precise debugging information using gdb.
16659
16660 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16661
16662         * inssel-ia64.brg: Make the helper methods static.
16663
16664 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16665
16666         * inssel-x86.brg: make the helper methods static.
16667
16668 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16669
16670         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16671
16672 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16673
16674         * mini.c: updates for monoburg changes.
16675         * inssel.brg: make a few helper functions static as they should.
16676
16677 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16678
16679         * Makefile.am: Move mini-codegen.c to common_sources.
16680
16681 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16682
16683         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16684         instructions.
16685         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16686         mini-ppc.h: port to use the common local register allocator.
16687
16688 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16689
16690         * mini.h: Remove the comment too then.
16691
16692 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * mini.h: put back backend.data which is to be used shortly and
16695         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16696         pointers on 4 byte boundaries it'd have much bigger issues running
16697         and you can ifdef it out anyway.
16698
16699 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16700
16701         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16702         MonoInst size by 4 bytes on 64 bit machines.
16703
16704 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16705
16706         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16707         replacement with more meaningful field names. Arch maintainers, please
16708         check the assigned names are good enough for your arch.
16709
16710 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16711
16712         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16713         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16714
16715 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16716
16717         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16718         relocations and memory requirements, put the optimization flags
16719         definitions in their own file.
16720
16721 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16724
16725         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16726
16727 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16728
16729         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16730
16731 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16732
16733         * inssel.brg: use the correct function to get the size of an item
16734         in an array, given an element class.
16735         * aot-compiler.c: do not access class->class_size directly.
16736
16737 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16738
16739         * mini.h, debug-mini.c: added a debugging function to print
16740         info about local variables and arguments in a jitted method.
16741
16742 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16743
16744         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16745
16746         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16747
16748 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16749
16750         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16751         inner and outer loops when passing vtypes.
16752
16753 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16754
16755         * mini-ppc.c: take into account the cpu errata for cache flushing
16756         which caused some random errors (bug #79381).
16757
16758 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16759
16760         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16761         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16762
16763 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16764
16765         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16766         loaded.
16767
16768         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16769         freebsd ports tree.
16770
16771         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16772         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16773
16774         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16775         displacement.
16776
16777 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16780
16781 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16782
16783         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16784         macro does not have to be changed during debugging.
16785
16786         * 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>.
16787
16788         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16789
16790         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16791         
16792         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16793         MONO_ARCH_NO_EMULATE_MUL is defined.
16794
16795         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16796
16797         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16798
16799         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16800
16801         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16802         
16803 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16804
16805         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16806         stuff to mini-exceptions.c where it is used.
16807
16808         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16809         setup code, the real one is in mini-exceptions.c.
16810
16811         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16812         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16813         some changes from the freebsd ports tree.
16814
16815         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16816         constants.
16817         
16818         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16819
16820 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16821
16822         * mini.c: on Linux, check for /proc to be mounted
16823         (bug# 79351, novell bug#201204).
16824
16825 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16826
16827         * mini.c: handle cases where pthread_attr_getstack() behaves
16828         incorrectly (bug #78096).
16829
16830 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16831
16832         * mini-arm.c: support larger stack frames (bug #79272).
16833
16834 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16835
16836         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16837
16838         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16839         tokens.
16840
16841         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16842         mono_class_from_name () to find a class from its name.
16843
16844         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16845
16846 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16847
16848         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16849
16850 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16851
16852         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16853
16854 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16855
16856         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16857         callinfo->trampoline.
16858
16859         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16860         fixes #79271.
16861         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16862         future.
16863
16864 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16865
16866         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16867
16868 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16871         stats.method_trampolines, it is already done by the generic trampoline code.
16872
16873         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16874         
16875 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16876
16877         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16878
16879         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16880
16881         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16882
16883         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16884         
16885         * mini.c (print_jit_stats): Print new stats.
16886
16887         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16888
16889 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16892         Address on two dimensional arrays. Fixes #78729.
16893
16894         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16895
16896         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16897         a method.
16898
16899         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16900
16901         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16902         #79130.
16903         
16904         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16905         a race condition.
16906         (mini_get_ldelema_ins): Ditto.
16907
16908 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16909
16910         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16911         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16912         Fixes #79213.
16913
16914 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16915
16916         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16917         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16918
16919         * exceptions-s390x.c: Cosmetic change.
16920
16921         * tramp-s390.c: Fix warning.
16922
16923         * cpu-s390.md: Correct length of mul_imm.
16924
16925 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16926
16927         * aot-compiler.c: added binary writer with ELF backend
16928         implementation (only on Linux/x86 for now).
16929
16930 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16931
16932         * Makefile.am: Don't run net 2.0 AOT tests.
16933
16934         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16935         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16936
16937         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16938
16939 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16940
16941         * aot-compiler.c: simplified and refactored the asm-writing code
16942         to allow different backends.
16943
16944 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16945
16946         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16947
16948         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16949         little. Share patches of type TYPE_FROM_HANDLE as well.
16950
16951         * mini.c (mono_patch_info_equal): New helper function.
16952         (mono_patch_info_hash): Ditto.
16953
16954         * aot-compiler.c (emit_method_code): Fix s390 build.
16955
16956         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16957         is not handled because it is stored as a flag and not as a type ctor. Fixes
16958         #79016.
16959
16960 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * aot-compiler.c: Fix computation of GOT slot statistics.
16963         
16964         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16965         Also remove support for not PIC AOT.
16966
16967         * mini.h: Bump AOT file format version.
16968
16969         * objects.cs: Add a test for #78990.
16970
16971         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16972         (peter.dettman@iinet.net.au). Fixes #79087.
16973
16974         * basic-long.cs: Add a test for the above.
16975
16976 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16977
16978         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16979         
16980         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16981         code somewhat.
16982
16983 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16984
16985         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16986         exceptions.
16987
16988 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16989
16990         * mini.c: Don't verify COM proxy invoke calls
16991         
16992
16993 2006-08-10  Dick Porter  <dick@ximian.com>
16994
16995         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16996         which process is holding semaphores locked.
16997
16998 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16999
17000         * mini-ia64.c mini-amd64.c: Fix #79027.
17001
17002         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17003
17004         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17005
17006         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17007         implicit arguments in a vararg call. Fixes #79027.
17008
17009 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17010
17011         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17012         (mono_get_array_new_va_signature): Ditto.
17013
17014 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * aot-runtime.c: Call init_plt lazily.
17017
17018         * inssel-long.brg: Fix unsigned long->int conversion.
17019
17020         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17021
17022         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17023         that most data is now in the .rss/.data section.
17024
17025 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17026
17027         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17028
17029         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17030
17031         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17032
17033         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17034
17035         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17036         virtual call. Fixes #79010.
17037
17038         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17039         and use the result as the this argument in the real call.
17040
17041         * generics.2.cs: Add a new test for #79010.
17042         
17043 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17044
17045         * mini-x86.c: Fix a warning.
17046
17047         * aot-compiler.c: Add a bunch of statistics.
17048
17049         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17050
17051 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17052
17053         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17054
17055 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17056
17057         * 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>.
17058
17059 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17060
17061         * mini.c (mono_method_to_ir): Obtain the original method in the
17062         CIL stream and use this to perform validation.
17063
17064         Fixed: #78816
17065
17066 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17067
17068         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17069         (mono_arch_call_opcode): Ditto.
17070
17071         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17072         #78826.
17073
17074         * mini.c (mono_patch_info_dup_mp): New helper function.
17075         
17076         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17077         compilation. Fixes #78827.
17078
17079 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17080
17081         * declsec.c: Use original security informations for
17082           MONO_WRAPPER_MANAGED_TO_MANAGED.
17083
17084 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17085
17086         * mini.c: Allow Com Interop methods/classes and
17087         don't verify COM wrapper calls
17088         
17089
17090 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17091
17092         * inssel-long32.brg: Fix long->i4 checked conversion.
17093
17094         * exceptions.cs: Add a test for the above.
17095
17096 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17097
17098         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17099
17100         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17101         leaks.
17102
17103         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17104         #78775.
17105
17106 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17107
17108         * mini.c: Fix solaris/x86 exception handling.
17109
17110         * Makefile.am: Get rid of $(ICU_LIBS).
17111
17112 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17115         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17116         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17117
17118         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17119
17120         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17121         this function causes a SIGSEGV.
17122
17123 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * mini.c: Remove unused solaris/x86 includes.
17126
17127 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17130
17131 2006-06-20  Jb Evain  <jbevain@gmail.com>
17132
17133         * cpu-g4.md: fix max length of start_handler instruction.
17134
17135 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17136         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17137
17138 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17139         * ssa.c: Fixed bug 78653 for SSA based deadce.
17140         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17141         MonoInst.flags, used in SSA based deadce.
17142         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17143         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17144
17145 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17146
17147         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17148         it can end up using non executable memory on ppc64 systems
17149         running ppc32 userspace (fix from Johannes Berg).
17150
17151 2006-06-14  Dick Porter  <dick@ximian.com>
17152
17153         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17154         4.1.1
17155
17156 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17157         * mini.c: Made so that inline is locally disabled if it would
17158         trigger a .cctor, because too many apps depend on this behavior
17159         (which seems to be also the one of the MS CLR).
17160
17161 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17162
17163         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17164         No idea why this worked before.
17165
17166         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17167         which branch to outer exception clauses since they could skip the
17168         inner finally clauses. Fixes #78633.
17169
17170         * exceptions.cs: Add a test for the above.
17171
17172         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17173         Fixes #78629.
17174
17175         * iltests.il: Add a test for the above.
17176
17177 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17178
17179         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17180         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17181
17182         * iltests.il: Add a test for the above.
17183
17184 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17185
17186         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17187         
17188         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17189         methods as instrinsics.
17190
17191 2006-06-09  Wade Berrier <wberrier@novell.com>
17192
17193         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17194         (simple-cee-ops.h ssapre-mini-ops.h)
17195
17196 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17197
17198         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17199         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17200         instruction).
17201         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17202         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17203
17204 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17205
17206         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17207
17208 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17209
17210         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17211         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17212         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17213         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17214         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17215         of opcodes, so that bug 78549 should not happen again.
17216         * ssapre.c: Updated to use the renamed files.
17217
17218 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17219
17220         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17221         in OP_ATOMIC_EXCHANGE_I4.
17222
17223 2006-06-07  Wade Berrier <wberrier@novell.com>
17224
17225         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17226         in mono_debugger_create_notification_function)
17227
17228 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17229
17230         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17231         
17232         * mini.c (type_from_stack_type): Disable some changes which do not
17233         seem to work.
17234
17235         * driver.c: Reenable opts.
17236
17237         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17238         of the evaluation stack.
17239         
17240         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17241         evaluation stack trace at entry to the bblock.
17242
17243         * mini.c (merge_stacks): New function to perform verification of stack merges.
17244         Turned off by default.
17245
17246         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17247         STACK_MP.
17248         
17249 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17250
17251         * local-propagation.c: Fixed bug 78549.
17252
17253 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17254
17255         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17256
17257 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17258
17259         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17260         tramp-arm.c, tramp-ia64.c
17261         (mono_debugger_create_notification_function): Update signature to
17262         new signature and use new protocol for creating the notification
17263         function.  
17264
17265         Should fix the build.
17266
17267 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17268
17269         * exceptions-ppc.c (mono_jit_walk_stack)
17270         (ves_icall_get_frame_info): Fix the build
17271
17272 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17273
17274         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17275
17276 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17277
17278         * il2tests.2.il: New file for generics CIL tests.  Add test for
17279         #78019.
17280         * Makefile.am: Update.
17281
17282         Fix #78019
17283         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17284         to nullable types.
17285
17286 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17287
17288         * aliasing.c: Fixed bug 78311.
17289
17290 2006-05-29  Martin Baulig  <martin@ximian.com>
17291
17292         * mini-exceptions.c (mono_find_jit_info): When computing the
17293         native offset, check whether we're actually inside the method's
17294         code; call mono_debug_print_stack_frame() to format the frame.
17295         (ves_icall_System_Exception_get_trace): Call
17296         mono_debug_print_stack_frame() to format the stack frame.
17297         (ves_icall_get_trace): Update to the new debugging API.
17298         (mono_jit_walk_stack_from_ctx): Likewise.
17299         (ves_icall_get_frame_info): Likewise.
17300
17301         * mini.c (get_method_from_ip): Use the new debugging API.
17302         (mono_print_method_from_ip): Likewise.
17303
17304         * exceptions-ppc.c
17305         (mono_jit_walk_stack): Use the new debugging API.
17306         (ves_icall_get_frame_info): Likewise.   
17307
17308 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17309
17310         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17311
17312 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17313
17314         * mini.c: Added "limitator" to inline for debugging.
17315
17316 2006-05-24  Martin Baulig  <martin@ximian.com>
17317
17318         * debug-debugger.c (mono_debugger_init): Create a private,
17319         malloc()-based code manager for the notification function and
17320         intentionally leak it on exit.  This fixes the crash-on-exit race
17321         condition.
17322
17323         * tramp-amd64.c
17324         (mono_debugger_create_notification_function): Added
17325         `MonoCodeManager *' argument.
17326
17327         * tramp-x86.c
17328         (mono_debugger_create_notification_function): Added
17329         `MonoCodeManager *' argument.
17330
17331 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17332
17333         * aliasing.c: Fixed 64 bit issue.
17334         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17335         default since all known bugs are fixed (one more time!).
17336
17337 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17338
17339         * mini.c: write barrier support.
17340
17341 2006-05-23  Martin Baulig  <martin@ximian.com>
17342
17343         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17344         check at the top of the file.
17345
17346 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17347
17348         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17349         reverting changes without reason and without changelog entries.
17350
17351 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17352
17353         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17354         to a few opcodes. Fixes #78439.
17355
17356         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17357         consistency with other archs.
17358
17359         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17360
17361 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17362
17363         * debug-debugger.c: fix the build.
17364
17365 2006-05-17  Martin Baulig  <martin@ximian.com>
17366
17367         * debug-debugger.c
17368         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17369         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17370         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17371         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17372
17373 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17376
17377 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17378
17379         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17380         MONO_TYPE_GENERICINST.
17381         
17382         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17383         MONO_TYPE_GENERICINST.
17384
17385 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17386
17387         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17388         #78325.
17389
17390 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17391
17392         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17393         mempool.
17394         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17395
17396 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17397
17398         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17399         mono_trace_cleanup ().
17400
17401         * iltests.il: Fix problem with the newly added test.
17402
17403         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17404         due to register constraints, free up the previous hreg. Fixes #78314.
17405
17406         * iltests.il: Add new test for #78314.  
17407
17408         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17409         Interlocked.Add. Fixes #78312.
17410
17411         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17412         
17413 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17414
17415         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17416
17417 2006-05-05  Martin Baulig  <martin@ximian.com>
17418
17419         * debug-mini.c (mono_debug_open_block): New method.
17420
17421         * mini-amd64.c
17422         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17423         the beginning of each basic block.
17424
17425         * mini-x86.c
17426         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17427         the beginning of each basic block.
17428
17429 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17430
17431         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17432         default until I understand why they break the build on amd64.
17433
17434 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17435
17436         * mini.c (mini_cleanup): Call mono_cleanup ().
17437
17438         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17439         errors.
17440
17441 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17442
17443         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17444         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17445         default since all known bugs are fixed, and I cannot reproduce bug
17446         77944... I'm asking Matt Hargett to test again after this commit.
17447
17448 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17449
17450         * mini-codegen.c: Fixed typo that thrashed inline.
17451
17452 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17453
17454         * dominators.c (compute_dominators): Avoid using a worklist since
17455         it is not correct in some cases. Instead, iterate over all bblocks as
17456         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17457
17458 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17459
17460         * mini.c (mono_jit_compile_method_inner): Use
17461         mono_prepare_exception_from_error that resets the value
17462         internally.
17463
17464 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17465
17466         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17467         
17468 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17469
17470         * aliasing.c: Fixed bug 78210.
17471
17472 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17473
17474         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17475         default until all their problems (or the ones they trigger) are fixed.
17476
17477 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17478
17479         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17480         
17481         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17482         as loaded only after resolving patches since that could invoke the same method.
17483
17484         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17485
17486         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17487         functions.
17488
17489         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17490         AOT loader.
17491
17492         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17493         stack.
17494
17495         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17496         made from AOT code through the PLT table.
17497
17498         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17499         holding the plt offset when a call is made to the aot plt trampoline.
17500         
17501 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17502
17503         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17504         amd64 AOT support.
17505
17506         * Makefile.am (common_sources): Fix build breakage.
17507
17508         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17509         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17510         intra-assembly calls if possible.
17511         
17512         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17513
17514         * mini-trampolines.c: Handle PLT entries.
17515
17516         * mini.c: Avoid creating a GOT var for calls.
17517
17518         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17519         from mscorlib code.
17520
17521         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17522         from mscorlib code.
17523
17524         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17525         AOT code.       
17526
17527         * mini.h: Bump AOT file format version.
17528         
17529         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17530         covers more cases.
17531
17532 2006-04-25  Martin Baulig  <martin@ximian.com>
17533
17534         * driver.c: Disable copyprop, consprop and inline when running
17535         inside the debugger.
17536
17537 2006-04-25  Martin Baulig  <martin@ximian.com>
17538
17539         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17540         with `get_current_thread' and added `detach'.
17541         (MonoDebuggerMetadataInfo): Added `thread_size',
17542         `thread_tid_offset', `thread_stack_ptr_offset' and
17543         `thread_end_stack_offset'.
17544
17545 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17546
17547         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17548         aot-runtime.c.
17549
17550         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17551         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17552
17553         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17554
17555         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17556
17557         * aot.c: Add support for ADJUSTED_IID.  
17558
17559 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17560
17561         * aot.c (emit_method_order): Don't align method_order_end.
17562
17563         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17564         the interface ID changes.
17565
17566 2006-04-21  Dick Porter  <dick@ximian.com>
17567
17568         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17569         cleaning up a thread.  Fixes the new part of bug 77470.
17570
17571 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17572
17573         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17574         to managed wrapper.
17575                      
17576 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17577
17578         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17579         
17580         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17581         SIGSEGV. Fixes #78072.
17582
17583         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17584         unregister our SIGABRT handler.
17585
17586 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17587
17588         * mini.c: Disabled inline where it can alter the call stack in a
17589         way visible from managed code.
17590         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17591         default.
17592
17593 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17594
17595         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17596         on other platforms. Fixes #78089.
17597
17598 2006-04-13  Martin Baulig  <martin@ximian.com>
17599
17600         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17601         determine whether we're inside the debugger.
17602
17603         * debug-debugger.h
17604         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17605
17606 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17609         handler clauses. Fixes #78024.
17610
17611         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17612         in the CALL_MEMBASE opcodes. Fixes #78088.
17613         (mono_arch_get_vcall_slot_addr): Ditto.
17614
17615 2006-04-10  Martin Baulig  <martin@ximian.com>
17616
17617         * debug-debugger.c: The thread handling code has now been moved
17618         into ../metadata/threads.c.
17619
17620 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17621
17622         * driver.c (mono_main): Fix --with-gc=none build.
17623
17624         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17625         (mono_spillvar_offset_float): Ditto.
17626         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17627         hreg, not when its !global, since on ia64, there is a third category: stacked
17628         registers.      
17629
17630 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17631
17632         * mini.c: set MonoInst->klass for load field address and a few other
17633         places.
17634
17635 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17636
17637         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17638
17639 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17640
17641         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17642         the branch opt changes.
17643
17644 2006-04-06  Dick Porter  <dick@ximian.com>
17645
17646         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17647         
17648         * wapihandles.c (mini_wapi_seminfo): 
17649         * driver.c (mono_main): Add semaphore info option
17650
17651 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17652
17653         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17654         branch optimization changes. Fixes #78009.
17655
17656 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17657
17658         * mini.c: ignore accessibility of methods in managed->native wrappers.
17659
17660 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17661
17662         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17663         
17664         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17665
17666 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17667
17668         * mini.c: Modify the branch optimizations to preserve the invariant that
17669         the entries inside the in_bb and out_bb arrays are unique.
17670         (mono_unlink_bblock): Avoid creation of new arrays.
17671
17672 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17673
17674         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17675         change (#77992).
17676
17677 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17678
17679         * mini.c (optimize_branches): Remove the "optimizations" in
17680         the cbranch1/cbranch2 -> branch cases which were causing several
17681         problems in the past. Fixes #77986.
17682
17683 2006-03-31  Chris Toshok  <toshok@ximian.com>
17684
17685         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17686         default optimizations :(
17687
17688 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17691         branch.
17692
17693 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17694
17695         * local-propagation.c: Added comments to structs and removed
17696         "Mono" prefixes from local tree mover types.
17697
17698 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17699
17700         * Makefile.am (arch_sources): Define this for each architecture so 
17701         libmono_la_SOURCES is defined in one place.
17702
17703 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17704
17705         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17706         from handles/.
17707
17708 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17709
17710         * driver.c: print the GC name supplied by configure.
17711
17712 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17713
17714         * local-propagation.c: Added tree mover, and moved here all the
17715         local propagation code from mini.c
17716         * mini.c: Added support for treeprop, and moved all the local
17717         propagation code to local-propagation.c
17718         * mini.h: Added support for treeprop
17719         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17720         treeprop, inline and deadce by default
17721         * Makefile.am: Added local-propagation.c
17722
17723 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17724
17725         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17726
17727 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17728
17729         * debug-debugger.c: make it compile without the Boehm GC.
17730
17731 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17732
17733         * mini.c: fixed issue with mismatch when an icall is registered
17734         with multiple names but same address.
17735
17736 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17737
17738         * declsec.c, mini-exceptions.c: use write barrier to set reference
17739         fields of managed objects.
17740
17741 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17742
17743         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17744         (can_access_internals): Fix a warning.
17745
17746         * mini.c (print_method_from_ip): Rename this to 
17747         mono_print_method_from_ip so it gets exported.
17748
17749         * trace.c: Deal with strings inside StringBuilder's containing garbage
17750         and fix memory leaks. Fixes #77848.
17751
17752 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17753
17754         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17755         fixes #77787.
17756
17757 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17758         
17759         * mini-s390.c: Remove OP_X86_TEST_NULL.
17760
17761 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17762
17763         * mini.c: use the correct GetHashCode() for the moving collector.
17764
17765 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17766
17767         * liveness.c: Regalloc spill cost tuning.
17768
17769 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17770         
17771         * mini-s390x.h: Correct S390_LONG macro.
17772
17773         * mini-s390x.c: Cleanup unused code.
17774
17775 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17776
17777         * jit-icalls.h: New file.
17778
17779         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17780         icalls and include that instead of including jit-icalls.c.
17781
17782         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17783         OP_X86 opcodes.
17784
17785 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17786
17787         * mini.c: when checking for member accessibility, also check for
17788         friend assemblies and for explicit interface implementations.
17789
17790 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17791
17792         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17793
17794         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17795
17796         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17797         common cases are done first.    
17798
17799         * mini-ops.h: Only define platform specific opcodes on the given platform.
17800
17801         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17802         branch.
17803         
17804 2006-03-14  Martin Baulig  <martin@ximian.com>
17805
17806         Revert Paolo's change from r57348:
17807
17808         * mini.h: don't use gboolean for bitfields.
17809         * mini.c: verifier changes for fields and methods accessibility.
17810
17811 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17812
17813         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17814
17815         * mini-s390x.c: Fix conv_r_un.
17816
17817         * cpu-s390, cpu-s390x.md: Fix lengths.
17818
17819 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17820
17821         * mini.c: nested types have access to all the nesting
17822         levels, not just the enclosing types.
17823
17824 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17825
17826         * mini.c: added a few more verification checks.
17827
17828 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17829
17830         * liveness.c: Merge optimizations from the linear-il branch.
17831
17832 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17833
17834         * mini-ia64.c (emit_call): Add a comment.
17835
17836         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17837
17838         * tramp-ia64.c: Fix some warnings.
17839
17840 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17841
17842         * mini.h: don't use gboolean for bitfields.
17843         * mini.c: verifier changes for fields and methods accessibility.
17844
17845 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17846
17847         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17848         lazy icall wrapper changes.
17849
17850         * dominators.c: Replace all the dominator algorithms with faster
17851         ones from the linear-il branch.
17852
17853         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17854         the mempool.
17855
17856         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17857         common cases are done first.
17858
17859         * mini-amd64.c: Fix some warnings.
17860
17861         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17862         from the mempool.
17863
17864         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17865         added code.
17866
17867         * mini.h: Add a missing prototype.
17868
17869 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17870
17871         * mini.c: Compile icall wrappers lazily.
17872
17873         * mini-codegen.c: Use printf instead of g_print since its much faster.
17874
17875         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17876         function.
17877
17878         * mini.c (optimize_branches): Cache the negative result from 
17879         remove_block_if_useless ().
17880
17881         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17882         Also fix some bblock linking issues.
17883
17884         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17885         assembly files.
17886
17887         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17888
17889         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17890         accessed fields first, for better cache behavior.
17891         
17892 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17893
17894         * mini.c: speedup IList<T> array accesses.
17895
17896 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17897
17898         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17899         inline_costs counter. Fixes #77190.
17900
17901 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17902
17903         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17904         trace messages. Fixes #77706.
17905
17906 2006-03-04  Martin Baulig  <martin@ximian.com>
17907
17908         * tramp-amd64.c, tramp-x86.c
17909         (mono_debugger_create_notification_function): Use
17910         mono_global_codeman_reserve() to allocate a buffer at runtime and
17911         return it.
17912
17913         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17914
17915         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17916         notification function at runtime and then call `initialize' in the
17917         `MONO_DEBUGGER__debugger_info' vtable.
17918
17919 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17920
17921         * iltests.il: Fix a visibility problem.
17922
17923 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17924
17925         * driver.c, mini.c: add hooks for the counters API.
17926
17927 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17928
17929         * driver.c: show disabled options.
17930
17931 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17932
17933         * linear-scan.c: always use cost-driven selection.
17934
17935 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17936
17937         * jit-icalls.c (helper_compile_generic_method): Revert change from
17938         2006-02-24.
17939
17940 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17941
17942         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17943
17944 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17945
17946         * inssel.brg: style fixes, mostly to force the updated monoburg
17947         to run for people using svn.
17948
17949 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17950
17951         * mini.c: match monoburg changes.
17952
17953 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17954
17955         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17956         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17957         declaration in the header file.
17958
17959 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17960
17961         * helpers.c: reduce relocations and mem usage.
17962
17963 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17964
17965         * mini.h, mini-codegen.c: disable logging features if
17966         requested by configure.
17967
17968 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17969
17970         * mini.c: tiny verifier changes.
17971
17972 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17975         cpu-pentium.md: stack alignment changes for osx/x86,
17976         partially from Geoff Norton <gnorton@customerdna.com>.
17977
17978 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17979
17980         * jit-icalls.c (helper_compile_generic_method): Update to changes
17981         in metadata/class.c.
17982
17983 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17984         
17985         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17986         
17987         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17988         interface calls with large offsets.
17989
17990 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17991
17992         * jit-icalls.c (helper_compile_generic_method): Document the
17993         special-case we depend on so that we can inflate the method twice
17994         with the same context with no bad side-effects.
17995
17996 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17997
17998         * mini-x86.c, mini-amd64.c: fix for case when xen support
17999         is disabled.
18000
18001 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18002
18003         * mini-x86.c, mini-amd64.c: generate code to access tls items
18004         in a faster way for Xen systems.
18005
18006 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18007
18008         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18009         updates and compilation fixes for the OSX/x86 port, mostly from
18010         Geoff Norton <gnorton@customerdna.com>.
18011
18012 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18013
18014         * inssel.brg: faster interface call implementation
18015         to sync with the interface_offsets MonoVTable changes.
18016
18017 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18018
18019         * mini.c: more verification checks.
18020
18021 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini.c: added a few more verification checks.
18024
18025 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18026
18027         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18028         facility on the processor and use it if available.
18029
18030 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18031
18032         * driver.c, aot.c, mini.c: throw exception if the IL code is
18033         invalid or unverifiable.
18034
18035 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18036
18037         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18038         m.StructField.
18039
18040 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18041
18042         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18043
18044 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18045
18046         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18047         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18048         handling of instantiated generic valuetypes.
18049
18050 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18051
18052         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18053         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18054         instead.
18055
18056         * generics.2.cs: Revert the nullable reftypes tests.
18057
18058 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18059
18060         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18061         using __builtin_frame_address (1) as it doesn't work in the presence
18062         of optimizations. Hopefully fixes #77273.
18063
18064         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18065         -> generics.cs change as it doesn't work with some automake versions.
18066
18067 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18068
18069         * mini.c: handle systems that sue a different way to
18070         retrieve the stack address of the current thread.
18071
18072 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18073
18074         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18075         it specially in the makefile.
18076
18077         * generics.2.cs: Add tests for nullable reference types.
18078
18079 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18080
18081         * mini.c: always handle the case when mono_jit_init()
18082         is called in a thread different from the main thread,
18083         confusing libgc (bug #77309).
18084
18085 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18086
18087         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18088
18089 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18090
18091         * mini.c: change optimize_branches () to use a single loop
18092         and introduce a new optimization to simplify some range checks.
18093
18094 2006-02-03  Martin Baulig  <martin@ximian.com>
18095
18096         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18097         and merged with debugger_thread_manager_add_thread().
18098         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18099         inform the debugger about the main thread.
18100
18101 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18102
18103         * basic.cs: Add test for div.un/rem.un constant folding.
18104
18105 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18106
18107         * cpu-s390x.md: correct int_xor_imm length
18108
18109 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18110
18111         * generics.2.cs: New test for #77442.
18112
18113         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18114         #77442.
18115
18116 2006-02-02  Martin Baulig  <martin@ximian.com>
18117
18118         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18119         <mono/metadata/mono-debug-debugger.h>   
18120
18121         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18122
18123 2006-02-02  Martin Baulig  <martin@ximian.com>
18124
18125         * debug-debugger.h: New header file for debug-debugger.c.
18126
18127         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18128         function is a separate thread anymore; add support for attaching.
18129
18130 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18131
18132         * tramp-x86.c: Fix a warning.
18133
18134 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18135
18136         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18137         on very large methods.
18138
18139         * aot.c (load_patch_info): Fix a warning.
18140
18141 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18142
18143         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18144         mini-ops.h: alu membase optimizations.
18145
18146 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18147
18148         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18149         to speedup StringBuilder.
18150
18151 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18152
18153         * dominators.c (mono_compute_natural_loops): Fix detection of
18154         loop body start blocks.
18155
18156         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18157
18158 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18159
18160         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18161         #75145.
18162
18163 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18164
18165         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18166
18167 2006-01-25  Martin Baulig  <martin@ximian.com>
18168
18169         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18170         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18171         started to cleanup this file a little bit.
18172
18173 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18174
18175         * mini.c: optimize a codepath frequently happening in generics code.
18176
18177 2006-01-23  Martin Baulig  <martin@ximian.com>
18178
18179         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18180
18181         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18182         functions directly.
18183
18184         * driver.c: debug-debugger.c is only available if
18185         `MONO_DEBUGGER_SUPPORTED' is defined.   
18186
18187 2006-01-23  Martin Baulig  <martin@ximian.com>
18188
18189         * debug-debugger.c: Only enable this on platforms where the Mono
18190         Debugger is working (x86 and x86_64).
18191
18192 2006-01-21  Martin Baulig  <martin@ximian.com>
18193
18194         The Mono Debugger is now using the normal `mono' instead of the
18195         `mono-debugger-mini-wrapper' when executing managed code.
18196
18197         * debug-debugger.c: New file; previously known as
18198         debugger/wrapper/wrapper.c.
18199
18200         * debug-mini.c (mono_init_debugger): Removed.
18201
18202         * driver.c (mono_main): Added new `--inside-mdb' command line
18203         argument which is used when running inside the debugger.
18204
18205 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18206
18207         * liveness.c (mono_analyze_liveness): Remove some unused data
18208         structures.
18209
18210 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18211
18212         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18213
18214 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18215
18216         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18217         depends on implementation details of monobitset.
18218
18219         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18220         Fixes #77271.
18221
18222 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18223
18224         * liveness.c: Update after monobitset changes.
18225
18226 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18227
18228         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18229
18230 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18231
18232         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18233
18234         * mini-s390x.c: Remove warning messages.
18235
18236 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18237
18238         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18239
18240 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18241
18242         * generics.2.cs: Add ldelem/stelem_any test.
18243
18244 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18245
18246         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18247
18248 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18249
18250         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18251         
18252 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18253
18254         * generics.2.cs: Reenable vtype tests.
18255
18256         * inssel-x86.brg: Remove an icorrect valuetype rule.
18257
18258 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18259
18260         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18261         initial support for OP_ABS.
18262
18263 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18264
18265         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18266
18267 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18268
18269         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18270         conversion and implement LADD/LSUB.
18271
18272         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18273         architectures.
18274
18275 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18276
18277         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18278
18279         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18280         architectures.
18281
18282 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18283
18284         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18285         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18286         (stack walk problem).
18287
18288 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * aot.c (mono_aot_load_method): Fix a warning.
18291
18292 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18293
18294         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18295
18296 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18297
18298         * iltests.il: Add test for #77148.
18299
18300         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18301         #77148.
18302
18303 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18304
18305         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18306
18307 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18308
18309         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18310         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18311
18312         * basic-long.cs: Add lconv-to-r4/r8 tests.
18313
18314 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18315
18316         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18317
18318         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18319         here as on other archs.
18320
18321 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18322
18323         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18324
18325 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18326
18327         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18328         
18329         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18330
18331         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18332         instrument_prolog; Add memory_barrier instruction.
18333
18334 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18337
18338 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18339
18340         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18341
18342         * aliasing.c inssel.brg: Fix warnings.
18343
18344         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18345         could skip initialization of some parts of memory.
18346
18347         * mini.c mini-ia64.c: Fix warnings.
18348
18349         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18350
18351 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18352
18353         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18354         a crash seen on sparc.
18355
18356         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18357         
18358         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18359
18360 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18361
18362         * mini-ops.h: Add s390_backchain instruction
18363
18364         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18365
18366         * cpu-s390.md: Add s390_backchain instruction
18367
18368         * mini-s390.c: Significant ABI changes
18369
18370         * mini-s390.h: Cater for zero length structures
18371
18372 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18373
18374         * mini-s390.c: ABI fixes
18375
18376         * inssel-s390.brg: Remove debug statements
18377
18378         * cpu-s390.md: Fix length of ATOMIC_xx operations
18379
18380 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18381
18382         * basic-float.cs: Add float<->long conversion tests.
18383
18384 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18385
18386         * mini-s390.c: Fix LOCALLOC processing.
18387
18388         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18389
18390 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18391
18392         * iltests.il: Add tests for some opcodes not covered by the other
18393         tests.
18394
18395 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18396
18397         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18398         register loading for Tail processing; Correct trace output.
18399
18400         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18401
18402         * cpu-s390.md: Correct size of jmp instruction. 
18403
18404 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18405
18406         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18407
18408 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18409
18410         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18411           Bring s390 up to current level.
18412
18413 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18414
18415         * generics.2.cs: Disable the newly added tests as they do not work yet.
18416         
18417         * generics.2.cs: Add valuetype tests.
18418
18419 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18420
18421         * basic-long.cs: Add i4->u8 test.
18422
18423         * objects.cs: Add tests for JIT intrinsic.
18424
18425         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18426         optimizations lost by a mistake.
18427
18428 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18429
18430         * basic-long.cs: Remove a test moved to objects.cs.
18431
18432         * arrays.cs: Add more array tests.
18433
18434 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18435
18436         * arrays.cs: Add new tests for multi-dimensional arrays.
18437
18438 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18439
18440         * Makefile.am (test_sources2): Add generics.2.cs.
18441         (EXTRA_DIST): Add test_sources2.
18442
18443 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18444
18445         Support for boxing and unboxing nullable types as well as the
18446         isinst operation on nullables, per the CLI ammendment.
18447
18448         * inssel.brg (CEE_ISINST): Special case for nullable
18449
18450         * mini.c (handle_unbox_nullable): new method
18451         (handle_box): Special case for nullable types
18452         (mono_method_to_ir): Call handle_unbox_nullable in correct
18453         places.
18454
18455         * generics.2.cs: New test suite
18456
18457         * Makefile.am: Support for regression tests with generics.
18458
18459 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18460
18461         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18462         allocated to registers. Fixes #76800.
18463
18464 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18465
18466         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18467
18468 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18469
18470         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18471         of platforms.
18472
18473 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18474
18475         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18476         objects.cs.
18477
18478         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18479         
18480         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18481 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18482
18483         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18484         single precision before storing to a single precision location.
18485
18486 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18487
18488         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18489
18490 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18491
18492         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18493         correct files.
18494
18495         * basic.cs: Remove test_0_byte_compares test which was moved to
18496         objects.cs a long time ago.
18497
18498 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18499
18500         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18501
18502 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18503
18504         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18505         handlers are called.
18506
18507         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18508         throwing code.
18509
18510          * mini-ia64.c: Add support for the throw->branch exception 
18511         optimization.   
18512
18513         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18514
18515 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18516
18517         * mini.c: Enabled "fastpath" deadce :-)
18518         
18519 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18520
18521         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18522         alias analysis pass to support it.
18523         * mini.h: Likewise.
18524         * ssa.c: Likewise.
18525         * liveness.c: Likewise (liveness computation can use aliasing
18526         information to be more accurate).
18527         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18528         moreover made so that "--compile-all" uses the given optimization
18529         flags and not the default ones.
18530         * aliasing.c: Alias analysis (new file).
18531         * aliasing.h: Likewise.
18532         * Makefile.am: added "aliasing.c" and "aliasing.h".
18533         
18534 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18537         OP_L opcodes.
18538
18539 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18540
18541         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18542         fp >= end_of_stack exit condition, as it is not needed, and it might
18543         become true for fp eliminated frames.
18544
18545 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18546
18547         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18548         coded offsets.
18549
18550 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18551
18552         * mini-arm.c: fixed alignment of doubles/longs to match
18553         the C ABI (bug #76635).
18554
18555 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18556
18557         * aot.c: fix compilation with --enable-minimal=aot.
18558
18559 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18560
18561         * mini-arm.c: fixed compatibility with the new
18562         floating point emulator package for compares.
18563
18564 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18565
18566         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18567
18568 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * mini-exceptions.c (print_stack_frame): Output to stderr.
18571         (mono_handle_native_sigsegv): Ditto.
18572
18573 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18574
18575         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18576         OP_LCONV_TO_OVF_I implementation.
18577
18578         * mini-amd64.c: Add support for the throw->branch exception 
18579         optimization.
18580
18581         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18582         when the catch clause catches a more general exception, i.e. Object.
18583
18584 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18585
18586         * cpu-ia64.md: Remove unused opcodes.
18587
18588         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18589         specific defines for architectures defining USE_SIGACTION.
18590
18591         * mini-ia64.c: Fix some warnings.
18592
18593         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18594         version seemed to skip a frame.
18595
18596 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18599         only calls which are made to native code use this flag.
18600
18601 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18602
18603         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18604         varargs methods as well.
18605         
18606         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18607         which have save_lmf set. Reorganize methods prologs a bit.
18608
18609         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18610         debugger to the proper place.
18611
18612 2005-10-29  Martin Baulig  <martin@ximian.com>
18613
18614         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18615         when running inside the debugger until the debugger has support
18616         for it.
18617
18618 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18619
18620         * mini.h: Fix a warning.
18621
18622 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18623
18624         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18625         we expose publicly, this returns the string.
18626
18627 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18630         with fp elimination.
18631
18632 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18633
18634         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18635         native stacktrace using the glibc 'backtrace' function if available.
18636
18637 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18638
18639         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18640
18641         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18642         handle SIGSEGVs received while in native code.
18643
18644         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18645         code, call mono_handle_native_sigsegv which will abort the runtime
18646         after printing some diagnostics, instead of converting it into a
18647         confusing NullReferenceException.
18648
18649 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18650
18651         * cpu-pentium.md: Remove unused opcodes.
18652
18653 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * mini-amd64.h (MonoLMF): Add rsp field.
18656
18657         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18658         the lmf too.
18659
18660 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18661
18662         * mini-codegen.c (get_register_spilling): Fix some warnings.
18663
18664 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18667         elimination during exception handling. Enable fp elimination by
18668         default.
18669
18670         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18671         elimination.
18672
18673 2005-10-16  Martin Baulig  <martin@ximian.com>
18674
18675         * mini-exceptions.c
18676         (mono_debugger_run_finally): New public method for the debugger.
18677
18678 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18679
18680         * debug-mini.c (mono_debug_init_method): Fix warning.
18681
18682         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18683         the 'exname' parameter const to fix some warnings.
18684
18685 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18688         introduced by the previous patch.
18689
18690 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18691
18692         * basic-float.cs: Add test for precision of float arithmetic.
18693
18694         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18695         when loading/storing single values from/to memory.
18696
18697         * mini.c (mono_jit_compile_method_with_opt): Create the function
18698         pointers in the correct domain.
18699
18700 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18703         introduced by previous patch.
18704         
18705         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18706         when out_filter_idx is NULL.
18707
18708         * mini-exceptions.c: Don't run filter clauses twice during exception
18709         handling. Fixes #75755.
18710
18711 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18712
18713         * aot.c: Add support for ldflda wrappers.
18714
18715         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18716         #75902.
18717
18718 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18719
18720         * mini.c, mini.h: do not consider exception handlers blocks when
18721         setting up interface variables.
18722
18723 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18724
18725         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18726
18727 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18728
18729         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18730         causes a regression.
18731
18732         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18733
18734 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18737         of the OP_P definitions.
18738
18739         * TODO: Add a proposal for dealing with the CEE/OP mess.
18740
18741         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18742         optimizations from the x86 port.
18743
18744         * cpu-amd64.md: Ditto.
18745
18746         * basic.cs basic-long.cs: Add tests.
18747
18748 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18749
18750         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18751         Patrik Torstensson's implementation of my exception-handling
18752         optimization idea, when the exception object is not used
18753         (bug #62150).
18754
18755 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18756
18757         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18758         of the mul_imm optimizations from the old jit.
18759
18760 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18761
18762         * mini.c, liveness.c: patch by Patrik Torstensson and
18763         Zoltan Varga to improve performance in methods with
18764         exception clauses.
18765
18766 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18767
18768         * driver.c: Remove 'Globalization' entry from --version.
18769
18770 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18771
18772         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18773         there is a profiler interested in JIT events.
18774
18775         * aot.c: Load profile files produced by the AOT profiling module, and
18776         reorder methods based on the profiling info. Add a 'method_order' table
18777         to the AOT file to make mono_aot_find_jit_info work with the reordered
18778         methods.
18779
18780         * mini.h: Bump AOT file version info.
18781
18782 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18783
18784         * mini-arm.h: work around what looks like a gcc bug when optimizations
18785         are enabled.
18786
18787 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18788
18789         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18790         conditionals.  Use ...
18791         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18792
18793 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18796         to determine the amount of memory to copy when passing valuetypes.
18797
18798         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18799         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18800
18801 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18802
18803         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18804         information about aot.
18805
18806 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18807
18808         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18809         macros. This will allow a deadlock debugger to easily be plugged
18810         in.
18811
18812 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18813
18814         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18815
18816 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18817
18818         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18819         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18820         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18821         ($(arch_built)) [CROSS_COMPILING]: Error out.
18822
18823 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18824
18825         * aot.c: Add support for the no_special_static flag for classes.
18826
18827 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * Reapply reverted patches.
18830
18831         * *: Revert r50174 as well.
18832
18833         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18834
18835 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18836
18837         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18838
18839 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18840
18841         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18842         part of the SIG_HANDLER_SIGNATURE.  
18843
18844 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18845
18846         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18847         statistics.
18848
18849         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18850         introduced by previous patch.
18851
18852 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18853
18854         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18855         saved registers too.
18856
18857         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18858         upon the information returned by get_call_info ().
18859         
18860         * mini-x86.c (add_float): Fix stack size calculation.
18861         (mono_arch_call_opcode): Rewrite this so it works based up the
18862         information returned by get_call_info ().
18863         (mono_arch_get_this_vret_args): Ditto.
18864
18865 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18866
18867         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18868         in cinfo to determine the registers which need to be used.
18869
18870 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18871
18872         * driver.c (mono_main): Add --server and --desktop flags. 
18873
18874 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18875
18876         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18877         registers as global registers.
18878
18879         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18880         longer needed with the new register allocator.
18881
18882         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18883
18884         * cpu-ia64.md: Remove unused opcodes.
18885         
18886         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18887         
18888 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * cpu-amd64.md: Remove unused opcodes.
18891
18892         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18893         needed with the new register allocator.
18894
18895         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18896         reg-reg moves.
18897
18898 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18899
18900         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18901
18902 2005-09-16  Martin Baulig  <martin@ximian.com>
18903
18904         * exceptions-amd64.c
18905         (throw_exception): Don't call mono_debugger_throw_exception() if
18906         we're a rethrow - see the FIXME in the code.
18907
18908 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18909
18910         * mini.c (mono_init_exceptions): This only works on some architectures.
18911         
18912 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18913
18914         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18915         on ia64.
18916
18917         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18918
18919         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18920         now in mini-exceptions.c.
18921
18922 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18925         now in mini-exceptions.c.
18926
18927 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18928
18929         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18930         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18931
18932         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18933         code into mini-exceptions.c. Add some assertions to it.
18934
18935 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18936
18937         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18938         (<software@solmersa.com>). Fix as errors on windows.
18939
18940 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18943         method info into the LMF.
18944
18945 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18946         
18947         * mini-ia64.c: Add proper unwind info for method epilogs.
18948
18949         * exceptions-ia64.c: Add some code to help debugging.
18950         
18951         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18952
18953         * mini-exceptions.c: Fix warning.
18954
18955 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18956
18957         * mini.c: Really fix build.
18958
18959         * mini-x86.c mini-amd64.c: Fix build.
18960
18961 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18962
18963         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18964
18965         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18966         some Interlocked methods as intrinsics.
18967
18968         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18969         for Thread methods as well.
18970
18971         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18972
18973         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18974
18975         * mini-ia64.c mini-x86.c mini-amd64.c 
18976         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18977         OP_MEMORY_BARRIER.
18978         
18979         * mini.c (mono_init_exceptions): Fix build breakage.
18980
18981 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18982
18983         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18984         of instructions. Use the new ia64_unw_op macros for emitting unwind
18985         info.
18986
18987         * mini.c (mono_init_exceptions): Initialize exception handling
18988         related trampolines at startup.
18989
18990 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18991
18992         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18993
18994 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18995
18996         * mini.c: Handle type loading errors gracefully during compilation and
18997         throw the appropriate exception.
18998
18999 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19000
19001         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19002         for the mono binary.
19003
19004 2005-09-09  Martin Baulig  <martin@ximian.com>
19005
19006         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19007         the release.
19008
19009 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19010
19011         * mini-arm.h: use emulation for conv.r.un for the release.
19012
19013 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19014
19015         * mini-arm.c, objects.cs: more fixes and tests for them.
19016
19017 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19018
19019         * mini-arm.c: align structures to at least 4 bytes to be able
19020         to keep our current optimized memcpy.
19021
19022 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19023
19024         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19025
19026 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19027
19028         * mini.c: ignore SIGPIPE.
19029
19030 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19031
19032         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19033
19034         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19035
19036 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19037
19038         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19039
19040 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19041
19042         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19043         exception handling support.
19044         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19045         patch by Brian Koropoff <briank@marakicorp.com>).
19046
19047 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19048
19049         * mini.c: revert another 'optimization' which breaks when
19050         items on the eval stack need to be saved at a basic block end
19051         (bug #75940).
19052
19053 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19054
19055         * jit-icalls.c: for arrays, ensure we always provide
19056         lower bounds.
19057
19058 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19059
19060         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19061         
19062         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19063
19064 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19065
19066         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19067         arguments in their original register.
19068
19069 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19070
19071         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19072         memset/memcpy.
19073
19074         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19075         when ssapre is enabled.
19076
19077         * inssel-long.brg: Fix bug in previous patch.
19078
19079         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19080         multiplication by a constant.
19081
19082 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19083
19084         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19085         icc.
19086
19087         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19088         saving registers.
19089
19090 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19091
19092         * inssel-arm.brg: apply changes tested by Brian Koropoff
19093         <briank@marakicorp.com>.
19094
19095 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19096
19097         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19098         
19099 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19100
19101         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19102         to the same register if dreg is just a base register.
19103         (print_ins): Improve printing of membase opcodes.
19104
19105         * inssel-x86.brg: Add optimized ldind(reg) rules.
19106
19107         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19108
19109 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19110
19111         * mini.c: when running under valgrind, set the stack bottom for
19112         the GC at the actual approximate stack for the app (fixes running
19113         mono with valgrind).
19114
19115 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19116
19117         * mini.c: do no break at the first valuetype to init found
19118         (fixes bug #75791).
19119
19120 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19121
19122         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19123
19124 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19125
19126         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19127
19128 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19131
19132 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19133
19134         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19135
19136         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19137         code.
19138
19139         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19140         code.
19141
19142         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19143         methods.
19144
19145 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19146
19147         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19148
19149 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19150
19151         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19152         in the tail recursion optimization.
19153
19154         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19155         debug info into the assembly file.
19156
19157         * iltests.il: Add test for filter regions.
19158
19159         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19160         initial stack of filter regions. Fixes #75755.
19161
19162 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19163
19164         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19165         stack requirements.
19166
19167 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19170         the check for an already compiled method on non-ia64 platforms.
19171         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19172         proper domain.
19173
19174         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19175
19176         * inssel-x86.brg: Add some optimized call rules.
19177
19178 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19179
19180         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19181         method here.
19182
19183         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19184         mono_arch_patch_delegate_trampoline.
19185
19186         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19187
19188         * mini-trampolines.c: Fix build.
19189
19190         * mini-amd64.h: Add delegate trampolines.
19191
19192         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19193
19194         * inssel-amd64.brg: Add optimized call rules.
19195         
19196         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19197
19198         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19199
19200 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19203         change.
19204
19205         * mini-ia64.c: Remove LMF fixmes.
19206
19207         * mini-ia64.h: Remove most fields from LMF.
19208
19209         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19210
19211         * mini-trampolines.c: Add support for IA64 function descriptors.
19212
19213         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19214         for IA64 function descriptors.
19215
19216 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19217
19218         * tramp-arm.c: patch the vtable for virtual calls. Added
19219         support code to register/unregister the LMF.
19220         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19221         more LMF work.
19222
19223 2005-08-19  Dick Porter  <dick@ximian.com>
19224
19225         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19226         bit value if needed.
19227
19228 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * mini.c (mini_get_method): Move handling of wrapper data here.
19231
19232         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19233
19234         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19235         virtual.
19236
19237         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19238         bblock->code does not remain empty.
19239
19240 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19241
19242         * arrays.cs: Add regression test for #75832.
19243
19244         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19245         rules. Fixes #75832.
19246
19247         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19248         instruction scheduling.
19249
19250 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19251
19252         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19253
19254 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19257
19258         * mini-codegen.c: Fix VC build.
19259
19260         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19261
19262 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19263
19264         * mini.h: fix signature for mono_register_opcode_emulation.
19265
19266 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * mini.c: Get rid of most of the helper_sig_... constants using
19269         mono_create_icall_signature ().
19270
19271 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * jit-icalls.c (helper_ldstr): New helper function.
19274
19275         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19276
19277         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19278         throw, load the string using a helper call instead of creating a string object.
19279
19280         * aot.c: Update after LDSTR changes.
19281
19282         * mini.h: Bump AOT file version.
19283         
19284         * aot.c: Save class size info into the AOT file. Print more statistics during
19285         compilation.
19286
19287         * mini.h: Bump AOT file version.
19288
19289         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19290         ordering of disasm cases. Fixes #74957.
19291
19292 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19293
19294         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19295         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19296         the generic code needed for the ARM port.
19297
19298 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19299
19300         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19301         inssel-arm.brg: more ARM features and fixes.
19302
19303 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19304
19305         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19306         ARM port work in progress.
19307
19308 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19309
19310         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19311
19312         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19313
19314         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19315
19316         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19317
19318         * *-ia64.*: Ongoing IA64 work.
19319         
19320         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19321
19322 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19323
19324         * TODO: Remove out-of-data todo stuff.
19325
19326         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19327         dead code.
19328
19329         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19330
19331         * mini.h: Bump corlib version.
19332
19333 2005-07-27  Martin Baulig  <martin@ximian.com>
19334
19335         * mini-codegen.c
19336         (create_copy_ins): Added `const unsigned char *ip' argument; set
19337         `copy->cil_code' from it.
19338
19339 2005-07-27  Martin Baulig  <martin@ximian.com>
19340
19341         * mini-exceptions.c (mono_handle_exception): Don't call
19342         mono_debugger_handle_exception() for filters.
19343
19344 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19345
19346         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19347         as well.
19348
19349 2005-07-26  Martin Baulig  <martin@ximian.com>
19350
19351         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19352
19353         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19354         helper_compile_generic_method() if the method is actually virtual
19355         and non-final.
19356
19357 2005-07-26  Martin Baulig  <martin@ximian.com>
19358
19359         * mini.c
19360         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19361         public; this is now accessed directly by the debugger.
19362         (mono_generic_trampoline_code): Removed.
19363
19364         * debug-mini.c
19365         (mono_debug_init_method): Also add interncalls and wrappers.
19366
19367 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19368
19369         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19370
19371 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19374
19375 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19378
19379 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19382         getting TLS offsets on AMD64 too.
19383
19384 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19385
19386         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19387
19388 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19389
19390         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19391         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19392
19393 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19396
19397         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19398         to mini.c.
19399
19400         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19401         mono_sparc_is_virtual_call ().
19402         
19403         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19404
19405         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19406         trampoline parameters.
19407
19408         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19409         
19410         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19411         to mono_arch_get_vcall_slot_addr.
19412
19413         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19414         trampoline code.
19415
19416         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19417
19418 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19421
19422 2005-07-19  Martin Baulig  <martin@ximian.com>
19423
19424         * exceptions-amd64.c (throw_exception): Call
19425         mono_debugger_throw_exception() here like we're doing it on i386.
19426
19427 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19428
19429         * mini-ia64.c: Add optimized TLS access support.
19430
19431 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19432
19433         * mini-exceptions.c: Ongoing IA64 work.
19434
19435         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19436
19437         * mini.c: Use the default optimization set when embedding. Fixes
19438         #75194.
19439
19440 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19441
19442         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19443         of trampolines to a separate file.
19444
19445         * mini-trampolines.c: New file.
19446
19447         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19448         separate file.
19449         
19450         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19451         amd64/ia64 code.
19452
19453         * mini-codegen.c: Fix cygwin build.
19454
19455 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19456
19457         * mini.c: Add some minor changes needed by the IA64 port.
19458
19459         * *-ia64.*: Ongoing IA64 work.
19460
19461 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19464         trampolines into arch-independent and arch-dependent parts.
19465
19466         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19467
19468 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19471
19472         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19473         the xp-regalloc-branch for amd64.
19474
19475         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19476         xp-regalloc-branch for x86.
19477
19478 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19479
19480         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19481
19482 2005-07-06  Martin Baulig  <martin@ximian.com>
19483
19484         * mini.c
19485         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19486         (mono_jit_runtime_invoke): Likewise.
19487
19488 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19491         on x86 too.
19492         
19493         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19494         without loading their metadata. Reorganize the file format so exception handling+
19495         debug info is kept separate from normal method info. Create MonoJitInfo 
19496         structures for methods lazily.
19497
19498         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19499         loading metadata.
19500         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19501
19502         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19503
19504         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19505         in AOT code.
19506
19507         * mini.h: Bump AOT file version.
19508
19509 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19512
19513 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19514
19515         * Makefile.am (check-local): Call semdel-wrapper.
19516
19517 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19518
19519         * mini-x86.c: Revert the last change as it seems to break the build..
19520
19521 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19524         
19525         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19526
19527 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19528
19529         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19530         outside of the macro, so strange stuff doesn't happen with gcc4
19531         (NEW_AOTCONST_TOKEN): Likewise.
19532
19533 2005-06-28  Martin Baulig  <martin@ximian.com>
19534
19535         * mini.c (mini_class_is_system_array): New static method; use this
19536         instead of `klass->parent == mono_defaults.array_class' everywhere
19537         since this also works for the new generic array class.
19538
19539 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19540
19541         * inssel.brg: Remove warnings.
19542
19543 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19544
19545         * mini-ia64.c: Ongoing IA64 work.
19546
19547         * basic-float.cs: Add float->i1 conversion test.
19548
19549         * iltests.il: Add conv.u4 test.
19550
19551 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * inssel-long.brg: Fix bug caused by last change.
19554
19555 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19556
19557         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19558         BSDs.  Allows the x86 JIT to work on OSX86
19559
19560 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19561
19562         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19563         u4->i8 conversion.
19564
19565         * mini-ia64.c: Ongoing IA64 work.
19566
19567 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19568
19569         * mini-ia64.c: Ongoing IA64 work.
19570
19571         * driver.c: Clean up jit_code_hash as well when using --regression.
19572
19573         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19574
19575         * basic-long.cs: Add tests for long->u4 conversion.
19576
19577 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19578
19579         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19580         that we do not depend on undefined C behavior: the order stuff
19581         gets evaluated within an expression. Fixes mono when compiled on
19582         GCC 4.
19583
19584 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * *-ia64.*: Ongoing IA64 work.
19587
19588         * aot.c: Lower memory usage while loading AOT methods.
19589
19590         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19591
19592         * mini.h: Bump AOT file format version.
19593
19594 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19597
19598 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19599
19600         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19601         not on callee assembly). Fixed some comments.
19602
19603 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19604
19605         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19606         it gets proper disassembly.
19607         (emit_method_info): Remove some dead code.
19608
19609         * mini.c (mini_method_compile): Allways allocate the GOT var in
19610         mono_method_to_ir for emulating opcodes.
19611
19612 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19615         before freeing the code memory. Fixes #74990.
19616
19617         * objects.cs: Add regression test for #74992.
19618
19619         * liveness.c: Extend live ranges of arguments to the beginning of the
19620         method. Fixes #74992.
19621
19622         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19623         so it points into the faulting instruction.
19624
19625 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19628
19629         * *-ia64.*: Ongoing IA64 work.
19630
19631         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19632
19633 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19636
19637         * *-ia64.*: Ongoing IA64 work.
19638
19639 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * basic-long.cs: Add tests for add/sub.ovf.
19642
19643         * basic.cs: Add tests for sub.ovf.
19644
19645         * *-ia64.*: Ongoing IA64 work.
19646
19647 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19648
19649         * *-ia64.*: Ongoing IA64 work.
19650
19651         * basic.cs: Add conv.ovf.i4.un test.
19652
19653 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19654
19655         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19656         
19657 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19658
19659         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19660
19661 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * *-ia64.*: Ongoing IA64 work.
19664
19665 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19666
19667         * trace.[ch]:
19668         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19669
19670 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19671
19672         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19673
19674 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19677
19678         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19679         of a call is callable by a near call.
19680
19681 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * mini-ia64.c: Ongoing IA64 work.
19684
19685 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19686
19687         * genmdesc.c: Make the generated array non-static.
19688
19689         * inssel-long.brg: Fix LSHR_IMM rule.
19690
19691         * *-ia64.*: Ongoing IA64 work.
19692
19693         * *-ia64.*: Ongoing IA64 work.
19694
19695 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19696
19697         * *-ia64.*: Ongoing IA64 work.
19698
19699         * *-ia64.*: Ongoing IA64 work.
19700         
19701         * mini-ia64.c: Ongoing IA64 work.
19702
19703         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19704
19705 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19708         
19709         * objects.cs basic-long.cs: Move some tests to objects.cs.
19710
19711 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19712
19713         * *-ia64.*: Ongoing IA64 work.
19714
19715         * iltests.il: Add a new test.
19716
19717         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19718         newobj. Fixes #75042.
19719
19720 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * *-ia64.*: Ongoing IA64 work.
19723         
19724         * *-ia64.*: Ongoing IA64 work.
19725         
19726         * *-ia64.*: Ongoing IA64 work.
19727
19728         * basic.cs objects.cs: Move tests accessing static variables as well.
19729
19730         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19731
19732 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19735
19736         * driver.c: Always print failed tests.
19737
19738         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19739         frame pointer.
19740
19741         * *ia64*: Ongoing IA64 work.
19742
19743 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * basic.cs: Add tests for add.ovf. Fix warnings.
19746
19747 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19748
19749         * driver.c (mono_main): Avoid crash if no argument is passed to
19750         --break;  Do not use g_error, but f_printf.   And fix all other
19751         ocurrences of the same crash.
19752
19753 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19756         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19757         Fixes #74742.
19758
19759 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * *-ia64.*: Add beginnings of IA64 backend.
19762
19763         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19764
19765 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19768         Fixes #74925.
19769
19770         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19771
19772         * mini-amd64.c: Fix a warning.
19773
19774 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19775
19776         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19777         in float_neg. Fixes #74897.
19778
19779         * mini-amd64.c (emit_call): Fix another near call bug.
19780
19781 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19782
19783         * declsec.c: Keep the appdomain information in the structure. Added a 
19784         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19785         value gets overwritten).
19786         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19787         an MonoAppDomain member to MonoSecurityFrame.
19788         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19789         used in the stack walk. Now use a MonoArray which grow (double) when
19790         it gets full.
19791
19792 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19793
19794         * mini.c: Re-enabled runtime cleanup, since running threads should
19795         now properly stop when exiting.
19796
19797 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19798
19799         * mini-codegen.c: New file contaning the arch-independent local
19800         register allocator. Not used by any architectures yet.
19801
19802         * mini.h linear-scan.c: Merge some changes from the 
19803         mini-xp-local-regalloc branch.
19804
19805 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19806
19807         * mini-amd64.c (emit_call): Fix calls to native functions when the
19808         runtime is compiled as a shared library. Fixes #74756.
19809
19810         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19811         on a literal field. Fixes #74751.
19812
19813 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19814
19815         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19816
19817 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19818
19819         * objects.cs: Add missing null casting test.
19820
19821 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19822
19823         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19824         in wrapper methods. Also rename 'address' variable to 'offset'.
19825
19826 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19829         warnings.
19830         
19831         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19832
19833         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19834         work on windows.
19835
19836 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19837
19838         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19839
19840 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19843         just the last bytes.
19844
19845 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * aot.c (mono_compile_assembly): Fix warning.
19848
19849         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19850         by the _MSC_VER stuff.
19851
19852 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * inssel-long.brg: Fix #74588.
19855
19856         * cpu-amd64.md: Fix #74591.
19857
19858         * iltests.il: Add new regression tests.
19859
19860 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19861
19862         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19863         valuetype.
19864
19865 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19868
19869         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19870         from Bill Middleton <flashdict@gmail.com>.
19871
19872 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * arrays.cs: Add new regression test. Fix warnings.
19875
19876 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19877
19878         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19879         and leakage in CKFINITE.
19880
19881         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19882         this to a null op since it is called on amd64 too.
19883
19884         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19885
19886         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19887         body since this is not used on amd64.
19888         
19889         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19890
19891         * mini-amd64.c: Remove obsolete fixmes.
19892
19893         * mini.c (print_method_from_ip): Fix debugging support.
19894
19895 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19896
19897         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19898         so that expressions that don't give much gain are not reduced.
19899         * ssapre.h: Likewise.
19900
19901 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19904
19905         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19906
19907         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19908
19909 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19912
19913         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19914
19915 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19916
19917         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19918         stack touching.
19919
19920         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19921
19922         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19923
19924         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19925
19926         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19927         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19928
19929         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19930
19931         * mini-x86.c: Fix up stack overflow handling.   
19932
19933         * exceptions.cs: Add new regression test.
19934
19935 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19936
19937         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19938         mono_jit_thread_attach.
19939
19940         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19941
19942 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19945         avoid calling constructors using callvirt.
19946
19947         * inssel.brg: Fix #74073.
19948
19949 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19950
19951         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19952         compilation with non-GCC compilers.
19953         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19954         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19955
19956 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19957
19958         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19959         klass->interface_offsets (will likely fix bug#74073).
19960
19961 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19962
19963         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19964
19965 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19966
19967         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19968         to amd64_div_reg_size ().
19969         
19970         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19971
19972 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19975
19976 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19977
19978         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19979
19980 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19981
19982         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19983         
19984         * mini.c (mono_precompile_assembly): Load and precompile referenced
19985         assemblies as well. Fixes #74015.
19986
19987 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19990
19991 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19992
19993         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19994         a lot of checks and (anyway) permissions cannot work until corlib is 
19995         loaded.
19996
19997 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19998
19999         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20000
20001 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20002
20003         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20004         calls (fixes bug#72824).
20005
20006 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20007
20008         * mini.c: fix tail recursion elimination (see test in bug#73936).
20009
20010 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20013         some fp functions in sse2 mode.
20014
20015 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20018
20019 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini.h mini.c: Add mono_get_jit_tls_key ().
20022
20023         * mini-x86.c: Enable fast TLS support on windows.
20024
20025 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20026
20027         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20028         * mini.c: Check for p/invoke method when generating code. If a
20029         p/invoke method, or it's class, isn't decorated with [Suppress
20030         UnmanagedCodeSecurity] then generate code to call System.Security.
20031         UnmanagedDemand (only if the security manager is active).
20032
20033 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20036         last change as it seems to cause strange crashes.
20037         
20038 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20039
20040         * *.c: handle unsafe function pointers where needed.
20041
20042 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * mini.c (mono_jit_free_method): Remove the fixme too.
20045
20046 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20047
20048         * mini.c: As discussed, make the code actually free the delegate
20049         thunk now, to enable the debugging of delegate problems, use
20050         MONO_DEBUG=1 when running Mono. 
20051
20052         This takes also care of parts of the leaks as seen by Joe.
20053
20054 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20057         thread_tls_offset calculation.
20058
20059 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20060
20061         * declsec.c: Reworked linkdemand checks for icall. The previous code
20062         was using the declaration code (untrusted) and didn't work as expected
20063         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20064         specific case.
20065
20066 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20067
20068         * iltests.il: Add new localloc test.
20069
20070         * mini-amd64.c: Handle large stack allocations the same way as on
20071         windows if stack overflow handling is working.
20072         
20073         * mini-amd64.c: Allocate the signal stack using mmap.
20074
20075         * mini.c (sigsegv_signal_handler): Fix reading of context.
20076
20077         * mini-exceptions.c: Fix up stack overflow handling.
20078
20079         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20080
20081         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20082
20083         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20084
20085         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20086
20087         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20088         tramp_init functions as they are no longer needed.
20089
20090 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20093         
20094         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20095
20096         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20097         
20098         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20099         support that now.
20100
20101         * mini-ops.h: Add OP_LMUL_IMM.
20102
20103         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20104         long mul/div opcodes as intrinsic.
20105
20106         * mini-amd64.c (emit_call): Handle the case when the callee might be
20107         an AOT method.
20108
20109 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20110
20111         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20112         extra safe.
20113         
20114         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20115
20116         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20117
20118 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20119
20120         * mini.c (mono_codegen): Don't leak here, to help people running
20121         monogrind.
20122
20123 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20124
20125         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20126         conversions in sse2 mode.
20127
20128         * basic-float.cs: Add regression test.
20129         
20130         * mini-amd64.c: Reenable sse2.
20131
20132 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20133
20134         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20135
20136 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20137
20138         * driver.c: Copyright text should include 2005.
20139         
20140 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20141
20142         * cpu-amd64.md (load_membase): Fix more max lengths.
20143
20144 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * cpu-amd64.md (load_membase): Fix max length.
20147
20148         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20149
20150         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20151
20152         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20153         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20154
20155         * basic-float.cs: Add rounding regression test.
20156
20157         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20158
20159 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20160
20161         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20162         structures in registers for pinvoke wrappers.
20163
20164 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20165
20166         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20167
20168 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20169
20170         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20171         wrapper to mono_jit_thread_attach.
20172
20173         * mini.c (mini_jit_thread_attach): New jit icall.
20174
20175         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20176         native->managed wrappers.
20177
20178         * exceptions.cs: Add new regression test.
20179
20180         * mini.c (optimize_branches): Check regions in the cbranch to throw
20181         block case as well. Fixes #73242.
20182
20183 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20184
20185         * mini.c: thread safety fixes.
20186
20187 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20190         patching stuff, since delegates use jump trampolines so there is
20191         no caller.
20192
20193         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20194         jump trampolines.
20195         
20196         * tramp-amd64.c: Fix build.
20197
20198         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20199         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20200
20201         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20202         Rename this to mono_arch....
20203         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20204
20205         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20206
20207         * mini-amd64.c (emit_call): If both the caller and the callee is
20208         guaranteed to have 32 bit addresses, emit a normal call.
20209
20210         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20211
20212         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20213         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20214         method_ptr inside delegates.
20215
20216 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20217
20218         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20219         invalidated. Fixes #73001.
20220
20221         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20222
20223         * mini-x86.c: Only use stdcall for pinvokes on windows.
20224
20225 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20226
20227         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20228         * mini-x86.c: remove unreliable __thread var offset detection,
20229         use the correct accessors and enable by default.
20230
20231 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * mini.c (mono_jit_free_method): Fix memory leak.
20234
20235 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20238
20239 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20240
20241         * cpu-amd64.md: Fix lengths of atomic opcodes.
20242
20243 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20244
20245         * driver.c: try to not imply using ICU is any good.
20246
20247 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20248
20249         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20250         functions as inline ops.
20251
20252         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20253         some Interlocked functions as inline ops.
20254
20255         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20256
20257         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20258
20259         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20260
20261         * mini.c: Add support for OP_NOT_TAKEN.
20262
20263         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20264         structures in registers for pinvoke wrappers.
20265
20266         * mini-amd64.c: Fix warnings.
20267
20268 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20269
20270         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20271
20272         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20273
20274         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20275         address instead of loading the address from it.
20276
20277         * mini-x86.c: Add support for returning small structs in registers
20278         on Win32. Fixes part of #70864.
20279         
20280 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20281
20282         * trace.c (get_token): Improve error checking.
20283
20284 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20285
20286         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20287
20288 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20289  
20290         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20291         it can be reused for MonoClass.
20292         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20293         _LINKDEMAND.
20294
20295 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20296
20297         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20298         instead of a MonoReflectionMethod. The method information wasn't used
20299         when displaying SecurityException details (but will be now).
20300
20301 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20302
20303         * Makefile.am : windows build fix.
20304
20305 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * iltests.il: Add new regression test.
20308
20309         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20310         #72522.
20311
20312 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20313  
20314         * mini.c: Moved linkdemand check into helper function check_linkdemand
20315         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20316         LDFTN, LDVIRTFTN).
20317
20318 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20319
20320         * declsec.c: Added statistics counter for different kinds of 
20321         LinkDemands.
20322         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20323         (and commented) declaration.
20324         * mini.c: Added statistics counter for security Demand code 
20325         generation. Added display of security statistics.
20326
20327 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20328
20329         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20330         Fix compilation errors under gcc-2.95.
20331
20332 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20333
20334         * mini.c, driver.c: Use the new jit trampoline hashtable
20335
20336 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20337
20338         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20339
20340 2005-02-11  Martin Baulig  <martin@ximian.com>
20341
20342         * debug-mini.c (mono_debug_close_method): Free the line number array.
20343
20344 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20345
20346         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20347         icalls.
20348
20349         * mini.h: Bump AOT file format version. 
20350
20351 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20352
20353         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20354         APTC and P/Invoke.
20355         * declsec.h: Added macros to get/set lazyly initialized security 
20356         informations about assemblies. Added new enum for different type of
20357         possible LinkDemand violation. Added function to check LinkDemands.
20358         * mini.h: Added a field to MonoCompile to hold any security violation
20359         detected when JITting a method (so it can be thrown later).
20360         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20361         and CEE_CALLVIRT. Added code to throw exception at the end of
20362         mini_method_compile (note: the exception is unhandled right now).
20363
20364 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20365
20366         * mini.c, jit-icalls.c: use the managed implementation of
20367         memset for initobj and memset, to avoid managed <-> unmanaged
20368         transitions.
20369
20370 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20371
20372         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20373         optimization if it would need a GOT var.
20374
20375         * basic.cs: Add tests for constant propagation and switch statements.
20376
20377         * ssa.c: Fix out-of-range constant propagation and switch statements.
20378
20379 2005-02-09    <vargaz@freemail.hu>
20380
20381         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20382
20383 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20384
20385         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20386
20387 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20388
20389         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20390
20391 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20392
20393         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20394         arithmetic operations.
20395
20396 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20397
20398         * mini-ppc.c: add a workaround for broken user code that
20399         DllImports vararg functions with non-vararg signatures.
20400
20401 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20404         meaningfull error message for assemblies written in Managed C++.
20405
20406         * tramp-amd64.c mini-amd64.h: Add support for 
20407         create_trampoline_from_token ().
20408
20409         * aot.c mini-x86.c abcremoval.c: Applied patch from
20410         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20411
20412 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20415         which takes a MonoImage/token as parameter instead of a MonoMethod.
20416
20417         * aot.c: Use the new trampoline for initializing vtables.
20418
20419         * aot.c: Add support for ldfld/stfld_remote wrappers.
20420
20421         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20422         rules for compare <MEM>, IMM.
20423
20424         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20425
20426         * aot.c: Handle inherited finalizers correctly.
20427
20428 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * inssel.brg (stmt): Add a missing _setup_... ().
20431
20432         * aot.c: Save some parts of the class state to the AOT file and use it
20433         to recompute that state when a class is initialized.
20434
20435         * mini.c: Install AOT hooks into the runtime.
20436
20437         * mini.h: Bump AOT file format version.
20438         
20439         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20440         Fixes #72148.
20441
20442         * iltests.il: Add new test.
20443
20444 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20445
20446         * mini.c: fix typo.
20447
20448 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20449
20450         * mini.c: setup the statistical profiler in the thread attach
20451         callback to cope with the new single thread code.
20452
20453 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20454
20455         * mini-ppc.c: ensure we have enough room for the profiler
20456         calls (fixed bug#72084).
20457
20458 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20461         it.
20462
20463 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20464
20465         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20466
20467 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20468
20469         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20470         to succesfully execute parrotbench).
20471         * ssapre.h: Likewise.
20472
20473 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20474
20475         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20476         variable for stores to method arguments (fixes a SSAPRE issue).
20477
20478 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20479
20480         * mini.c: handle value types in dup, fixes gen-112.cs.
20481
20482 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20483
20484         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20485         sequence for calls in dynamic methods to avoid thunks.
20486
20487 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20488
20489         * mini.c: correctly remove dynamic methods from the hashtable.
20490
20491 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20492
20493         * driver.c: Disabled SSAPRE until fix the bug that appears
20494         in IronPython's parrotbench.
20495
20496 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20497
20498         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20499
20500         * mini.c (mono_method_to_ir): Revert the previous change.
20501         
20502         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20503         when AOT compiling.
20504
20505         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20506         mono_jit_info_table_find () etc. when running under valgrind.
20507
20508         * inssel.brg: Fix warnings.
20509
20510         * mini-exceptions.c: Fix warnings.
20511
20512 2005-01-31  Martin Baulig  <martin@ximian.com>
20513
20514         * driver.c (compile_all_methods_thread_main): Don't try to compile
20515         generic methods or anything which has type parameters.
20516
20517 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20518
20519         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20520
20521         * TestDriver.cs: Add --verbose flags.
20522
20523         * graph.c ssa.c: Fix 64 bit warnings.
20524         
20525         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20526         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20527         Fix 64 bit warnings.
20528
20529         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20530         variable not spotted by gcc.
20531         
20532         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20533         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20534         X86_COMPARE_MEMBASE opcodes.
20535
20536         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20537
20538 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20539
20540         * *: MonoMethod->signature might be NULL now. You *MUST* use
20541         mono_method_signature.
20542
20543 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20544
20545         * driver.c (compile_all_methods_thread_main): Compile the methods
20546         without invoking cctors.
20547
20548 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20549
20550         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20551         * basic-calls.cs: test for the above.
20552
20553 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20556         MonoJitInfo changes.
20557
20558 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20559
20560         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20561         eagerly if it contains dynamic methods.
20562         
20563         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20564
20565         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20566         trace, it is now computed by an icall from trace_ips.
20567         
20568         * mini-exceptions.c: Fix a warning.
20569
20570 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20571
20572         * mini-exceptions.c: don't bother getting stack trace info if
20573         it's not going to be used.
20574
20575 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20576
20577         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20578         ssapre-mini-ops.h.
20579
20580 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20581
20582         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20583
20584         * aot.c: Avoid calling mono_method_get_header () if not needed.
20585
20586         * mini.h: Bump AOT file format version.
20587         
20588         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20589
20590         * mini.c (mono_print_tree): Print more info for calls.
20591
20592 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20593
20594         * declsec.h: Remove warning by adding missing include for marshal.h
20595
20596 2005-01-26  Martin Baulig  <martin@ximian.com>
20597
20598         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20599         `ip' twice.
20600
20601 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20602
20603         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20604         flags.
20605
20606         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20607
20608         * aot.c (mono_compile_assembly): Fix a warning.
20609
20610 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20611
20612         * declsec.c: Look for security attributes on the original MonoMethod 
20613         (and not the wrapped one). This fix permissions on icalls.
20614
20615 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20616
20617         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20618
20619         * mini.c (mono_allocate_stack_slots): Add a fixme.
20620
20621         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20622
20623 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20624
20625         * inssel.brg: optimize casts of sealed types (more
20626         optimizations waiting for fixes in remoting).
20627
20628 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20629
20630         * inssel.brg (stmt): Add another dummy rule.
20631
20632         * driver.c: Fix warnings.
20633
20634         * driver.c (mono_main): If running under valgrind, instruct glib to use
20635         the system allocation functions so valgrind can track the memory
20636         allocated by the g_... functions.
20637
20638         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20639
20640         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20641
20642         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20643
20644         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20645         variables in try regions.
20646
20647         * mini.c (mini_method_compile): Don't disable optimizations on large
20648         methods when AOT compiling.
20649
20650         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20651         allocate stack slots. Not yet used.
20652
20653 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20654
20655         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20656
20657 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20658
20659         * mini-ppc.c: make the branch info relative as the code
20660         buffer can be reallocated.
20661
20662 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20663
20664         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20665         * driver.c: Removed the AOT/security restriction. Now initialize the
20666         security manager (in metadata) if --security is used.
20667         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20668         rather than the pointer to declarative security, when AOT is used.
20669
20670 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20671
20672         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20673         basic blocks, reduced intrinsic exception throwing code size.
20674
20675 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20676
20677         * driver.c (mini_usage): Reorder the usage screen.
20678
20679 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini.c (mono_resolve_patch_target): Fix warning.
20682
20683 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20686         previous patch.
20687
20688         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20689
20690         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20691         breaks the amd64 build.
20692
20693         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20694         register allocation. Fixes #71454.
20695
20696         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20697
20698         * arrays.cs: Add new regression test.   
20699
20700 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20701
20702         * ssapre.c: Turned usage of snprintf to GString.
20703         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20704         (I left it on by mistake in my previous commit).
20705
20706 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20707
20708         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20709         on cond branch optimization (fixes bug# 71515).
20710
20711 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20712
20713         * abcremoval.c: Fixed bug 71062.
20714         * abcremoval.h: Likewise.
20715
20716 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20717
20718         * mini.c: Added a new functionality to optimize_branches, the removal
20719         of useless basic blocks, and fixed some problem in the removal of
20720         critical edges; some utility functions added for both purposes.
20721         * ssapre.c: Added complex expression support, and fixed bug 70637.
20722         * ssapre.h: Likewise.
20723         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20724         enabled in SSAPRE.
20725         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20726         * driver.c: Re-enabled SSAPRE.
20727
20728 2005-01-19  Martin Baulig  <martin@ximian.com>
20729
20730         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20731         the result of mono_get_method_constrained().
20732
20733 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20734
20735         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20736         manager.
20737
20738 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20739
20740         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20741         be detected.  Fixes #59296.
20742
20743 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20744
20745         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20746         which can happen. Fixes #71361.
20747
20748 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20749
20750         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20751         manager.
20752
20753 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20754
20755         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20756         appdomain-unload.exe to fail.
20757         
20758         * mini.c: Fix some memory leaks.
20759
20760 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20761
20762         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20763         Fixed bug and sped up some codepaths.
20764
20765 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * mini.c: Fix some memory leaks.
20768
20769         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20770         conversion.
20771
20772         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20773
20774         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20775         #71320.
20776
20777         * iltests.il: Add regression test for #71320.
20778
20779 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20780
20781         * mini.c (mono_codegen): Fix installation of profiler hooks.
20782
20783         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20784
20785 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20786
20787         * mini.h, mini.c, cfold.c: optimize access to enum
20788         readonly fields, too. Eval conditional branches if possible
20789         to perform unreachable code removal in more cases.
20790
20791 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20792
20793         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20794
20795         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20796         code manager.
20797
20798         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20799         WinXP DEP. Fixes #71244.
20800
20801 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20802
20803         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20804
20805 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20806
20807         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20808
20809 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20812         changes.
20813
20814         * mini.h: Bump AOT version.
20815
20816         * mini.h (MonoCompile): Change exvar to a hash table.
20817
20818         * mini.c: Allocate a separate exvar for each handler block.
20819
20820         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20821
20822         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20823         ex var with the pending exception and only throw if the two are equal.
20824         Fixes #68552.
20825         
20826         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20827
20828         * mini-x86.c: Fix warnings.
20829
20830         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20831         used by all the ports now.
20832
20833         * aot.c: Add write-symbols and save-temps options.
20834
20835 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20838
20839 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20840
20841         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20842         operations.
20843
20844         * tramp-s390.c: Check vtable slot belongs to the domain.
20845
20846         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20847         as per other platforms.
20848
20849         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20850
20851 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20852
20853         * driver.c: we don't run the Main() code in a subthread anymore.
20854
20855 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20856
20857         * mini.c: added experimental rtc support in the statistical
20858         profiler: if the user has the permission, more accurate statistics
20859         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20860         The MONO_RTC value must be restricted to what the linux rtc allows:
20861         power of two from 64 to 8192 Hz.
20862
20863 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20866
20867 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20868
20869         * mini-ppc.c: better icache flush for smp.
20870
20871 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20872
20873         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20874
20875         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20876         amd64 port, not yet used.
20877
20878 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20881         a struct type.
20882
20883 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20884
20885         * driver.c: Added --security option to activate the security manager.
20886         Right now this will allow code generation for declarative demands and
20887         is disabled when AOT is specified.
20888         * mini.c: Add code generation for declarative security demands.
20889         * mini.h: Add mono_use_security_manager as an extern gboolean.
20890
20891 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20894         emitting more dense assembly code.
20895
20896         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20897         exception throwing stuff.
20898
20899 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20900
20901         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20902         dead code.
20903
20904         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20905         left in by mistake.
20906
20907         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20908         fixed.
20909
20910         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20911
20912         * tramp-*.c: Only patch vtable slots if the object is in the current
20913         domain. Fixes appdomain-unload.exe.
20914
20915         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20916         
20917         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20918         x86 branch.
20919
20920 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * mini.c (reverse_branch_op): New helper function.
20923
20924         * mini.c (optimize_branches): Run the new optimization only on 
20925         platforms which support it. Also reverse all kinds of branches.
20926
20927         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20928
20929         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20930         a throw statement.
20931
20932         * mini.c (optimize_branches): Reverse not-equals branches if the false
20933         bblock is a throw. This happens a lot of time with argument checking in
20934         corlib.
20935
20936         * mini.c (mono_codegen): Add support for placing basic blocks after
20937         the function epilogue.
20938
20939         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20940         function epilogue.
20941         
20942 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20943
20944         * mini.c (setup_stat_profiler): Only set this up if the platform
20945         supports ITIMER_PROF.
20946
20947 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20950         previous patch.
20951
20952         * inssel.brg: Fix a warning.
20953
20954 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20955
20956         * mini.c: added support for statistical profiler 
20957         (run with: --profile=default:stat).
20958
20959 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20962
20963         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20964
20965         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20966         related to global registers from the amd64 port.
20967
20968 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20969
20970         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20971
20972         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20973         with global registers.
20974         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20975
20976         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20977
20978 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * debug-mini.c (encode_value): Fix off-by-one.
20981
20982         * aot.c (encode_value): Likewise.
20983
20984         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20985
20986 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20989         AOT.
20990
20991         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20992         
20993         * aot.c (emit_method_info): Increase size of temp buffer.
20994
20995         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20996         the AOT case.
20997
20998 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * aot.c (emit_method_info): Fix build.
21001         
21002         * aot.c: Further rework of the AOT file format to reduce the size of
21003         the method info data.
21004
21005         * mini.h: Bump AOT file format version.
21006
21007 2004-12-27  Martin Baulig  <martin@ximian.com>
21008
21009         * mini.c (mini_get_method): New static method; call
21010         mono_get_method_full() and mono_get_inflated_method().
21011         (mono_method_to_ir): Use mini_get_method() instead of
21012         mono_get_method_full(). 
21013
21014 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21015
21016         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21017
21018 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21019
21020         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21021
21022         * inssel-amd64.brg: Add some optimization rules.
21023
21024 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21025
21026         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21027         standard not GC'd stuff is fine.
21028
21029 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21030
21031         * aot.c: Rework the AOT file format to get rid of most of the global
21032         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21033
21034         * mini.h: Bump AOT file format version.
21035         
21036 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * mini.h: Bump AOT file format version.
21039
21040         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21041         address is inside a GOT.
21042
21043         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21044
21045         * cpu-pentium.md: Increase the maximum size of some instructions which
21046         might involve a got access.
21047         
21048         * mini.c (get_method_from_ip): Another debug helper function.
21049
21050         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21051         when got var accesses are created during the decompose phase.
21052
21053         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21054
21055         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21056         argument mini_compile_method and to MonoCompile, and use this to
21057         determine whenever a given method is compiled for AOT. This allows the
21058         other methods compiled during AOT compilation to be free of AOT stuff,
21059         so the backends does not need to add special support for them by
21060         creating a fake GOT etc.
21061
21062         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21063         longer needed.
21064
21065 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21066
21067         * mini.c (mono_method_to_ir): It turns out that some of the
21068         x-appdomain wrappers are lax with types, so just ignore this for
21069         all wrappers.
21070
21071         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21072         at the vtable->klass. If it is non-shared code we can just use the
21073         vtable.
21074
21075 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21076
21077         * mini-ppc.c: access MonoDomain from tls, too.
21078
21079 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21080
21081         * declsec.c: Removed unused variable (and related warning ;-)
21082
21083 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21084
21085         * iltests.il: New test for LDELEMA on an array of ref types.
21086
21087         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21088         all ldelema's on reftypes.
21089         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21090         it was the wrong place to put it.
21091
21092         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21093         register to pop to make this cleaner, at the request of Paolo.
21094
21095 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21096
21097         * mini-ops.h (OP_GETHASHCODE): New op.
21098
21099         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21100
21101         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21102         operation.
21103
21104         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21105         by 25%.
21106         
21107         * mini-x86.c (mono_arch_output_basic_block): Rather than
21108
21109         add ebp, 4
21110
21111         Emit
21112
21113         pop edx
21114
21115         The first is 3 bytes while the second is 1. This saves 36 kb on
21116         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21117         see a small boost because of icache locality.
21118
21119         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21120
21121 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21122
21123         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21124         started code sharing with the generic code.
21125
21126 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21127
21128         * mini-ppc.c, cpu-g4.md: added code for direct access to
21129         tls data slots.
21130
21131 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21132
21133         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21134          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21135         to OP_TLS_GET.
21136
21137 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21138
21139         * declsec.c|h: Added functions to cache the declarative stack modifiers
21140         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21141         structure.
21142         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21143         created. Register internal calls for System.Security.SecurityFrame::
21144         _GetSecurityFrame and _GetSecurityStack.
21145         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21146         the definitions for the new stack walk/callback mechanism.
21147         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21148         first security frame for LinkDemands and InheritanceDemands) and
21149         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21150         from lupus.
21151         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21152         walk initialization (lupus).
21153
21154 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21155
21156         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21157         idiom.
21158         (handle_loaded_temps): Do not create a temporary variable for
21159         things that we know are temps. They will never be modified.
21160         (mono_spill_call): Set MONO_INST_IS_TEMP
21161         (mono_emulate_opcode): ditto
21162         (emit_tree): ditto
21163         (mono_method_to_ir.CEE_DUP): ditto
21164
21165 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21166
21167         * mini.c (type_to_eval_stack_type): Make this handle the void type
21168         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21169         (emit_tree): use ip_in_bb to special case some common idioms
21170         Update all callers to pass in the IP.
21171         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21172
21173         This gives us a nice 2% speedup in mcs bootstrap.
21174
21175         * mini-x86.c (peephole_pass): Peephole pass to make
21176         mov  [foo], eax
21177         push [foo]
21178
21179         into
21180
21181         mov [foo], eax
21182         push eax
21183
21184         * mini.c (ip_in_bb): new method.
21185         (mono_method_to_ir): use this method rather than doing the hash
21186         lookup ourselves.
21187
21188         * linear-scan.c (mono_linear_scan): When expiring actives, you
21189         don't need to keep around variables that expire on this
21190         instruction. This makes it so that:
21191              a = b + 1
21192         will turn into:
21193              store (ebx add (ebx, 1))
21194         which will become
21195              add ebx, 1
21196
21197 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21200         combination to avoid doing two copies. Fix up problems with previous
21201         patch.
21202
21203         * mini.c: Fix 64 bit warnings.
21204
21205         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21206
21207 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21208
21209         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21210         changes from the x86 code.
21211
21212         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21213
21214 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21215
21216         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21217         throwing code to reduce its size, unify the AOT and non-aot code and 
21218         get rid of relocations in the AOT case.
21219
21220         * mini-x86.h mini.c exceptions-x86.c 
21221         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21222         raise corlib exceptions which doesn't require relocations in the 
21223         caller.
21224
21225         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21226
21227 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21230         needed.
21231
21232         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21233         in the AOT case.
21234
21235 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21236
21237         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21238         with add function when used from Inc/dec atomic 
21239         functions. Re-enabled optimization on x86.
21240         * mini-ops.h: renamed atomic_add functions to
21241         allow _add to match the Interlocked::Add and
21242         _add_next to match Interlocked::Inc/Dec.
21243
21244 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21245
21246         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21247         linking of BBs to the end BB, and enabled SSAPRE also with
21248         consprop and copyprop (which was prevented by that bug).
21249
21250 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21251
21252         * mini-x86.c: disabling the Interlocked optimizing code. 
21253
21254 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21257         file version check.
21258         
21259 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21260
21261         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21262         interlocked optimization due lack of support on x86, rewrote 
21263         exchange to take into account that base may be in eax.
21264         
21265         xsp works again; activated Interlocked optimizing code.
21266         
21267 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21268
21269         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21270
21271 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini-ops.h: Add new opcodes.
21274
21275         * mini.h: Add new patch types. Add got_var to MonoCompile.
21276
21277         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21278         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21279         make it work with all kinds of patchable code.
21280
21281         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21282         address of the GOT, and referencing entries in the GOT.
21283
21284         * mini.c: Add code to load the GOT address if needed by an opcode.
21285
21286         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21287         independent AOT code on the x86 using an elf-style Global Offset Table.
21288
21289 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21290
21291         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21292
21293 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21294
21295         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21296         when running xsp.
21297
21298 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21299
21300         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21301         of Interlocked:Increment/Decrement/Add as inline ops.
21302         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21303
21304 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21305
21306         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21307         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21308
21309 2004-12-12  Duncan Mak  <duncan@ximian.com>
21310
21311         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21312         again. `patch_info->table_size' is no longer valid after Zoltan's
21313         commit #37636.
21314
21315 2004-12-12  Martin Baulig  <martin@ximian.com>
21316
21317         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21318         if we are the "real" method, ie. not an inlined method inside it.
21319
21320 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21321
21322         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21323         before we look in the special fields table. This fixes
21324         ../tests/thread-static-init.cs.
21325
21326 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21327
21328         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21329         for Array get_Rank and get_Length. Fixes bug #70465.
21330
21331 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21334         separate structure to reduce the size of MonoJumpInfo.
21335
21336 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21337
21338         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21339
21340 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21341
21342         * mini.c (mini_get_inst_for_method): Changed to allow ports
21343         to return a MonoInst instead of opcode 
21344         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21345         
21346         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21347         Allow ports to return a created MonoInst instead of op-code, will enable
21348         new optimizations.
21349         (renamed mini_get_opcode_for_method to better reflected the functionality)
21350
21351 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21352
21353         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21354
21355 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21358         Fixes #69985.
21359
21360 2004-12-08  Martin Baulig  <martin@ximian.com>
21361
21362         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21363         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21364
21365 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21366
21367         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21368         correctly.
21369
21370         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21371         arithmetic.
21372
21373 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21374
21375         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21376
21377 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21378
21379         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21380         bug introduced by the previous patch.
21381
21382 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21383
21384         * mini-ppc.c, objectc.cs: handle large structs passed by value
21385         (fixes bug #69972).
21386
21387 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21388
21389         * mini-ppc.c: OP_ARGLIST implementation from
21390         Geoff Norton  <gnorton@customerdna.com>.
21391
21392 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21393
21394         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21395         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21396
21397 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21398
21399         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21400
21401 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21402
21403         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21404         support.
21405
21406 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * mini-sparc.c: Zero out localled-ed memory.
21409
21410         * iltests.il: Add tests for zeroing out localloc-ed memory.
21411
21412 2004-12-04  Martin Baulig  <martin@ximian.com>
21413
21414         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21415         mono_method_get_signature_full().       
21416
21417 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21418
21419         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21420         and some utility functions (always for SSAPRE), integrated SSAPRE.
21421         * mini.h: Likewise.
21422         * driver.c: Added ssapre option.
21423         * ssa.c: Small fix on OP_ARG handling.
21424         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21425         * Makefile.am: Likewise.
21426
21427 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21428
21429         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21430         now in the xp code.
21431
21432         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21433         icall.
21434
21435 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21436
21437         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21438         
21439         * cpu-s390.md : Increase instruction length of oparglist.
21440
21441         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21442
21443 2004-11-30  Martin Baulig  <martin@ximian.com>
21444
21445         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21446         virtual generic methods.  We call a special helper_compile_generic_method()
21447         icall to retrieve the method from the vtable, inflate and compile
21448         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21449
21450         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21451
21452 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21455
21456 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21457
21458         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21459         Fixes #69929.
21460
21461 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21462
21463         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21464         platforms with PIC aot.
21465
21466 2004-11-28  Martin Baulig  <martin@ximian.com>
21467
21468         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21469         Fixes gen-112.cs.
21470
21471 2004-11-28  Martin Baulig  <martin@ximian.com>
21472
21473         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21474         the result of mono_type_get_underlying_type() to check whether
21475         we're byref.
21476
21477 2004-11-26  Martin Baulig  <martin@ximian.com>
21478
21479         * mini.c
21480         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21481         in the g_assert().
21482
21483 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21484
21485         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21486         the same way as the other arguments so they won't get clobbered.
21487
21488         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21489         calls through R11 since it is clobbered by the trampoline code.
21490
21491 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21492
21493         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21494         pick up in-tree mscorlib.dll.
21495
21496 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21499
21500         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21501         runtime data/code are now stored in a table similar to the GOT in ELF. 
21502         This allows the code itself to be position independent.
21503
21504         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21505         loading changes.
21506
21507         * aot.c: Attach ELF type (object/function) directives to all global
21508         symbols.
21509
21510         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21511
21512         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21513
21514         * mini-amd64.h: Turn on PIC AOT code.
21515
21516         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21517         returning the offset within an OP_AOTCONST instruction where the GOT
21518         offset needs to be added.
21519
21520         * mini.h: Bump AOT file format version.
21521
21522 2004-11-25  Martin Baulig  <martin@ximian.com>
21523
21524         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21525         uninflated generic methods.
21526
21527 2004-11-25  Martin Baulig  <martin@ximian.com>
21528
21529         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21530
21531 2004-11-24  Martin Baulig  <martin@ximian.com>
21532
21533         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21534         original klass (this only applies for generic instances).
21535
21536 2004-11-24  Martin Baulig  <martin@ximian.com>
21537
21538         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21539         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21540         that array).
21541
21542 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21543
21544         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21545         localloc. Fixes #69678.
21546
21547         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21548         
21549 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21550
21551         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21552         used SSE registers on pinvoke calls. Fixes #69774.
21553
21554 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21555
21556         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21557         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21558
21559 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21560
21561         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21562         Refer directly to the mcs/ tree.
21563
21564 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21565
21566         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21567         Check if a trampoline for a synchronized method is required. 
21568
21569 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21570
21571         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21572         with localloc if needed. Throe arithmetric exception in
21573         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21574         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21575
21576 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21577
21578         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21579         types before switching on type.  Fixes #69622.
21580
21581 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21582
21583         * Makefile.am (check-local): New.  Integrate into 'make check'.
21584         (MCS,RUNTIME): Define using in-tree mono and mcs.
21585         (ILASM): New.
21586         (%.exe): Use $(ILASM).
21587
21588 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21589
21590         * mini-ppc.c: adjust initial prolog size (bug #69691).
21591
21592 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21593
21594         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21595         #69664.
21596
21597 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21598
21599         * Makefile.am (clean-local): Rename from 'clean'.
21600
21601 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21602
21603         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21604         to mono_arch_is_int_overflow. 
21605         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21606         SIGFPE events.
21607
21608 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21609
21610         * declsec.c|h: New files to support declarative security attributes.
21611         Added function to check if a method has (applicable) security.
21612         * mini.c|h: Add check for declarative security attributes in
21613         mono_method_check_inlining.
21614         * Makefile.am: Added declsec.c and declsec.h to the build.
21615
21616 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21617
21618         * mini.c, mini.h: update to keep dynamic code info per-domain.
21619
21620 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21621
21622         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21623         (mini_init): Get rid of it from here too.
21624
21625 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21626
21627         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21628         implemented OP_RETHROW (patch by Geoff Norton
21629         <gnorton@customerdna.com>).
21630
21631 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21632
21633         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21634         between appdomains.  Fixes appdomain-unload on PPC.
21635
21636 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21637
21638         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21639         mini-exceptions.c: handle the new wrapper types.
21640         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21641         token value as a MonoClass* when compiling a wrapper.
21642         mono_jit_create_remoting_trampoline now takes an additional
21643         MonoRemotingTarget parameter.
21644         
21645 2004-11-10  Martin Baulig  <martin@localhost>
21646
21647         * mini.c (mono_method_to_ir): Use `generic_container->context'
21648         rather than creating a new one.
21649
21650 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21651
21652         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21653
21654         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21655
21656 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21657
21658         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21659         the experimental aot cache stuff.
21660
21661 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21662
21663         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21664         mini-exceptions.c: update to exception clause structure changes.
21665
21666 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21667
21668         * exceptions-x86.c (throw_exception): Fix warnings.
21669
21670         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21671         for OP_RETHROW.
21672
21673 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * exceptions-sparc.c (get_throw_exception): Really fix this.
21676
21677 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21678
21679         * tramp-*.c: we no longer support icalls without wrappers, so
21680         a bit of code can be removed here
21681
21682 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21683
21684         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21685         patch.
21686
21687         * cpu-sparc.md: Add op_rethrow.
21688
21689         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21690
21691         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21692
21693         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21694         * mini-ops.h: Add OP_RETHROW.
21695
21696         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21697
21698         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21699
21700 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21701         
21702         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21703         Makes the output much easier to read
21704
21705 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21706
21707         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21708         prevents another huge leak when compiling with ssa. Secondly, the
21709         performance of doing this rather than freeing the lists is much
21710         better. GList does a lock every time you allocate a list link,
21711         so that it can use a memory pool. So, it is better to just use
21712         a memory pool of our own.
21713         
21714         * ssa.c, linear-scan.c: replace g_list_remove_link with
21715         g_list_delete.  The remove one does not free the GList, so we were
21716         leaking memory. On -O=all --compile-all with corlib, this cut down
21717         3 MB of allocations.
21718
21719 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21720
21721         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21722
21723         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21724
21725         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21726         into a new function mono_create_jit_trampoline ().
21727
21728 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21729
21730         * trace.c (get_spec): Allow tracing of classes without a namespace.
21731
21732 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21733
21734         * mini.c: Fix pointer overwrite in mini_method_compile.
21735
21736 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21737
21738         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21739         The darwin ABI needs some special handling for 1 and 2 byte structs
21740         Lets use lbz/lhz instead of lwz everywhere.
21741         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21742         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21743         Use stb/sth for the former, and put the latter always on stack instead of in
21744         argument registers.
21745
21746 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * trace.c (is_filenamechar): Add '_'.
21749
21750 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21751
21752         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21753
21754         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21755
21756 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21757
21758         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21759         depends on libmonogc. Fixes #68805.
21760
21761 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21762
21763         * mini.c (mono_jit_free_method): Provide extra information for
21764         this error.  Currently this leaks, but will be turned into a
21765         developer option in the future.
21766
21767 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21770
21771 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21774         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21775         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21776
21777 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21778
21779         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21780         trampolines for AOT code.
21781
21782 2004-10-22    <vargaz@freemail.hu>
21783
21784         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21785         constructed types. Fixes #68136.
21786
21787 2004-10-21  Martin Baulig  <martin@ximian.com>
21788
21789         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21790         if it returns true, unwind the stack to the call instruction.
21791
21792 2004-10-21    <vargaz@freemail.hu>
21793
21794         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21795
21796         * mini.h: Bump AOT version number.
21797
21798         * objects.cs: Add another test for unbox trampolines.
21799
21800         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21801         valuetype methods.
21802
21803 2004-10-20    <vargaz@freemail.hu>
21804
21805         * driver.c: Add SHARED to the set of optimizations tested.
21806
21807         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21808
21809         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21810         used by CEE_NEWARR.
21811
21812         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21813
21814 2004-10-20  Martin Baulig  <martin@ximian.com>
21815
21816         * mini-exceptions.c (mono_handle_exception): Call
21817         mono_debugger_handle_exception() to tell the debugger about
21818         catch/finally clauses.
21819
21820 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21823
21824         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21825         #68447.
21826
21827 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21828
21829         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21830         methods as their native size, fixed bug #57543, #57545.
21831         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21832         This saves a temporary register and mullw call down into 1 (minor perf
21833         increase for cases like sum = sum * 5;  This use to translate into:
21834             li r11,5
21835             mullw r28,r28,r11
21836         It now translates to
21837             mulli r28,r28,5
21838
21839 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21840
21841         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21842         #68388.
21843
21844 2004-10-11  Martin Baulig  <martin@ximian.com>
21845
21846         * mini.c (mono_method_to_ir): If we're a generic method, get the
21847         MonoGenericContainer from our MonoMethodNormal and create a
21848         MonoGenericContext from it.
21849
21850 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21851
21852         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21853
21854         * basic-long.cs: Add test for checked i8->i2 cast.
21855
21856 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21857
21858         * inssel-ppc.brg: added a couple of speedup rules.
21859
21860 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21863         to speed up rebuilds.
21864
21865 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21866
21867         * mini-s390.c: Minor fix to OP_OR_IMM.
21868
21869 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21870
21871         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21872         better. Fixes appdomain-unload.exe on sparc.
21873
21874 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21875
21876         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21877         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21878         see bug 67324.
21879
21880 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21881
21882         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21883
21884 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21885
21886         * mini.c: Always generate a field read/write wrapper for members
21887         of the class MarshalByRefObject since the actual instance could
21888         be a CBO.
21889
21890 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21891
21892         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21893
21894 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * driver.c mini.h trace.c: Move the setting of the main assembly into
21897         a separate function called mono_trace_set_assembly () and call it after
21898         actually loading the main assembly. Fixes #66872.
21899
21900 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21903         using the code manager.
21904
21905 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21908
21909 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21910
21911         * cpu-amd64.md: Fix bug in previous patch.
21912         
21913         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21914         #66650.
21915
21916 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21917
21918         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21919         mini-exceptions.c: updates for changed stack walk interface.
21920
21921 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21922
21923         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21924
21925 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21928
21929 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21930
21931         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21932         since assemblies can't be unloaded.
21933         
21934 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21935
21936         * cpu-amd64.md: Fix more instruction lengths.
21937
21938         * cpu-amd64.md: Fix lengths of some instructions.
21939
21940 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21941
21942         * inssel.brg: Make the array ldelema check aot friendly.
21943
21944 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21947
21948         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21949
21950 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * mini-x86.c: Fix build.
21953
21954         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21955         mono_type_get_underlying_type () helper function to simplify code.
21956         
21957 2004-09-09  Martin Baulig  <martin@ximian.com>
21958
21959         * mini-amd64.c: Don't access `type->data.klass' directly, call
21960         mono_class_from_mono_type() instead since the type may be a
21961         generic instance.
21962
21963 2004-09-09  Martin Baulig  <martin@ximian.com>
21964
21965         * mini-amd64.c (get_call_info): Fix support for generic instances.
21966         (add_valuetype): Use mono_class_from_mono_type() to get the class
21967         since we can be a generic instance.
21968
21969 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21970
21971         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21972
21973 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21974
21975         * liveness.c: reset spill costs on each scan: bug 62107
21976
21977 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21978
21979         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21980         unnecessary line that doesn't compile
21981
21982 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21983
21984         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21985         trampolines, make them call an error function so people can fix their
21986         code.
21987
21988 2004-09-06  Martin Baulig  <martin@ximian.com>
21989
21990         * mini.c (mono_method_to_ir): When initializing locals, handle a
21991         generic instances like a valuetype if it's a valuetype and like a
21992         class if it's a class.
21993
21994 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21997         stack. Fixes #64674.
21998
21999         * exceptions.cs: Add test for unwinding of call arguments.
22000
22001 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22002
22003         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22004         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22005         set the carry/borrow flag). The sparc and s390 implementations
22006         can now use optimized versions (and simplify the code). ppc bugfixes.
22007
22008 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22011
22012 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22013
22014         * inssel-amd64.brg: Remove leftover 32 bit rule.
22015
22016         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22017
22018 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22019
22020         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22021         mono_arch_find_jit_info functions into a new function. Fix a memory
22022         leak.
22023
22024         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22025         refactored code.
22026         
22027 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22028
22029         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22030         as well.
22031         
22032         * exceptions.cs: Add array size tests.
22033
22034         * mini.c: Allocate a separate icall wrapper for each arity of 
22035         mono_array_new_va. Fixes #59509.
22036
22037         * exceptions.cs: Add testcase for 64578.
22038
22039         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22040
22041         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22042         
22043 2004-09-02  Martin Baulig  <martin@ximian.com>
22044
22045         * mini.c (mono_method_to_ir): When initializing the locals, call
22046         handle_initobj() on the generic instance itself, not its
22047         underlying type.
22048
22049 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22050
22051         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22052         MonoJitInfo for dynamic methods.
22053
22054         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22055
22056         * mini.c: Add support for freeing JIT data for dynamic methods.
22057         
22058 2004-09-01  Martin Baulig  <martin@ximian.com>
22059
22060         * mini-x86.c (is_regsize_var): Added support for generic
22061         instances.
22062         (mono_arch_emit_prolog): Make this compile again, use
22063         `x86_push_imm_template (code)'.
22064
22065 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22066
22067         * mini-x86.c: make all push_imm instructions that get
22068         patched always emit the long form
22069
22070 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22071
22072         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22073         in a per-domain hash.
22074
22075         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22076         types.
22077
22078 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22079
22080         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22081         work.
22082         
22083         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22084         work.
22085
22086         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22087         Beginnings of SSE2 support.
22088
22089         * exceptions.cs: Add more tests for checked int<->uint casts.
22090
22091 2004-08-28  Martin Baulig  <martin@ximian.com>
22092
22093         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22094         generic instances.
22095
22096         * mini.c
22097         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22098         Handle generic instances recursively.
22099
22100 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22101
22102         * iltests.il: test for conv.u8 on a constant
22103
22104 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22105
22106         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22107         LCONV_x4 (shrun_32 (membase)).
22108
22109 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22110
22111         * inssel-x86.brg: c&p rules for push/setret of long
22112
22113 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22114
22115         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22116         compare (regvar, base)
22117
22118         * inssel-x86.brg: more burg love
22119
22120         * inssel.brg: more cleanup
22121
22122         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22123
22124 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22125
22126         * basic-long.cs, basic-calls.cs: new tests for optimization.
22127
22128 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22131         patch.
22132
22133 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22136         
22137 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22138
22139         * inssel.brg (mini_emit_memcpy): use 
22140         NO_UNALIGNED_ACCESS to disable memcpy optimization
22141
22142 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22143
22144         * mini-amd64.c: Handle generic types in various places.
22145
22146         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22147
22148 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * mini.c (handle_box): Fix warning.
22151
22152         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22153
22154         * mini-amd64.h: Enable the emit_state optimization.
22155
22156         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22157
22158         * mini-amd64.c: Add some new 64 bit peephole opts.
22159
22160         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22161
22162         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22163
22164         * mini-amd64.c: Register allocator fixes.
22165
22166         * mini.c: Add an optimization to emit_state to avoid allocation of new
22167         registers on some platforms.
22168
22169 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22172
22173         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22174         allocation. Fixes #63085.
22175
22176         * basic-long.cs: Add new regression test.
22177
22178         * mini-amd64.c: Register allocator improvements.
22179
22180 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * mini-amd64.c (read_tls_offset_from_method): Add another code
22183         sequence.
22184
22185         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22186         instruction sequence for nullifying class init trampolines.
22187
22188         * objects.cs: Add new regalloc test.
22189
22190         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22191
22192 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22193
22194         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22195         
22196         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22197         arguments.
22198
22199         * driver.c: Fix profiling after TLS changes.
22200         
22201         * driver.c (mono_main): Set mono_stats.enabled if needed.
22202
22203         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22204         CEE_BOX.
22205
22206 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22207
22208         * mini-x86.c: use a 1 op rather than a 2 op tls access
22209         instruction -> faster.
22210
22211 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22212
22213         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22214         x86 backend.
22215
22216 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22217
22218         * exceptions-sparc.c (throw_exception): fix typo
22219
22220 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22221
22222         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22223         set tree->dreg correctly with tls. Allow any
22224         register to be used.
22225
22226         * mini-x86.c (read_tls_offset_from_method): add new code
22227         generation pattern seen with GCC.
22228
22229
22230 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22231
22232         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22233         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22234         exceptions-sparc.c: fix some performance issues in exception
22235         handling and setting of the stack trace for exceptions that were
22236         already thrown.
22237
22238 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22241         x86 backend.
22242         
22243         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22244         registers.
22245
22246 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22247
22248         This patch inlines tls access, when possible.
22249         
22250         * mini.h: new arch functions for TLS intrinsics.
22251         All platforms updated with a stub.
22252
22253         * mini.c: use the new intrinsics
22254
22255         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22256         arch specific intrinsic for tls variables
22257
22258 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22259
22260         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22261         under windows.
22262
22263 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22264
22265         * mini.c: thread local allocation
22266
22267 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22270
22271         * Makefile.am: Link against the static version of libmonogc.
22272         
22273         * Makefile.am: Link the static versions of the convenience libraries
22274         into the mono executable.
22275
22276         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22277
22278 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22281         on integer overflow.
22282
22283         * mini-amd64.c: Reorganize function call code.
22284
22285         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22286
22287 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22288
22289         * inssel-x86.brg: use xor eax,eax.
22290         
22291         * basic.cs: new tests
22292
22293 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22294
22295         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22296         in exception throwing code.
22297         
22298 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22299
22300         * inssel-x86.brg: use xor esi,esi.
22301
22302 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22303
22304         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22305         can trace methods compiled during mini_init () too.
22306
22307         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22308         CEE_CONV_U4.
22309
22310 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22311
22312         * Makefile.am: static link on x86 (r=zoltan)
22313
22314 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22315
22316         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22317         code since it causes some programs to fail.
22318
22319 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22320
22321         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22322
22323 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22324
22325         * mini.c: ovfops_op_map - add STACK_OBJ case for
22326         CONV_I 
22327         * basic.cs: add test_0_pin_string as test
22328         case for above.
22329
22330 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22331
22332         * Makefile.am: build C# if srcdir != builddir
22333
22334 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22335
22336         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22337         fall-through blocks.
22338
22339 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22340
22341         * driver.c: enable loop by default again and include abcrem in -O=all.
22342
22343 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22344
22345         * iltests.il: Add some localloc tests.
22346
22347         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22348
22349         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22350         Fixes #62574.
22351
22352         * inssel-amd64.brg: Add some optimizations.
22353
22354         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22355         for gcc-3.4.
22356
22357         * Makefile.am: Statically link mono against libmono on AMD64.
22358         
22359         * mini-amd64.c inssel-amd64.brg: Optimizations.
22360
22361 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22362
22363         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22364
22365         * tramp-amd64.c: Patch calling code in trampolines.
22366
22367 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22368
22369         * mini-amd64.c: pinvoke struct passing fixes.
22370
22371 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22372
22373         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22374         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22375
22376 2004-08-05  Duncan Mak  <duncan@ximian.com>
22377
22378         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22379         CEE_LDELEM_ANY.
22380
22381 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * mini-amd64.c (emit_move_return_value): Move return value for normal
22384         calls too.
22385
22386 2004-08-05  Martin Baulig  <martin@ximian.com>
22387
22388         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22389         `type->type'; just modify `type' itself when dealing with enums
22390         and generic instances.
22391         (check_call_signature): Make `simple_type' a `MonoType *'.
22392
22393 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * mini.c: Use OP_PADD to add offsets to addresses.
22396
22397         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22398
22399 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22400
22401         * mini-sparc.c (mono_arch_emit_epilog): fix check
22402         for folding last op into restore instruction
22403
22404 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22405
22406         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22407         helper methods using the code manager.
22408         
22409         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22410
22411         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22412
22413 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22414         
22415         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22416           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22417
22418         * mini-s390.c: fix tail processing
22419
22420 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22421
22422         * mini-ppc.c: mul.ovf.un exception name fix.
22423
22424 2004-08-03  Martin Baulig  <martin@ximian.com>
22425
22426         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22427         instances; before jumping to `handle_enum', also modify `ptype'.
22428
22429 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22430
22431         * cpu-sparc.md: fcall maximal length too small.
22432
22433 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * mini-amd64.c mini.h: Add initial support for passing/returning 
22436         structures to/from pinvoked methods.
22437
22438 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22439
22440         * mini-ppc.c: reg allocator fix.
22441
22442 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22443
22444         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22445
22446         * inssel.brg: Optimize memset on 64 bit machines.
22447
22448         * mini-amd64.c: Fix some vararg cases.
22449
22450 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22451
22452         * mini-s390.c: Corrected macro in emit_float_to_int
22453
22454         * s390-abi.cs: Tests to exercise the s390 ABI
22455
22456 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22457
22458         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22459         caller saved regs.
22460
22461         * basic.cs: Add a test for add.ovf.un.
22462
22463 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22464
22465         * mini-sparc.c: add case for OP_IDIV_UN
22466
22467 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22468
22469         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22470         
22471         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22472
22473 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22474
22475         * basic.cs: regression tests.
22476
22477         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22478         regressions.
22479
22480 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22481
22482         * basic.cs: Add a new test.
22483
22484         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22485         and AOT. Various fixes and optimizations.
22486
22487         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22488
22489 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22490
22491         * mini-ppc.c: make sure temp regs are not used for global reg
22492         allocation.
22493
22494 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22495
22496         * cpu-sparc.md: conv_i8 fix for 64bits
22497
22498         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22499
22500 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22501         
22502         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22503         add opcode for cmp BYTE PTR [eax], imm.
22504
22505         * inssel.brg: Make memcpy and memset takes bases.
22506
22507 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22508
22509         * *-amd64.*: More AMD64 work.
22510         
22511 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22512
22513         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22514         add a compare-not-equal opcode.
22515         
22516 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22517
22518         * mini.c: Use mono_init_from_assembly instead of mono_init.
22519         
22520 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22523
22524         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22525
22526         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22527
22528         * inssel.brg: 64 bit fixes.
22529
22530         * mini.h (MonoCallInst): Add some AMD64 specific data.
22531
22532         * mini.h: Add some OP_P opcodes.
22533
22534 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22535
22536         * basic.cs: tests for 61797 and 61740
22537
22538 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22539
22540         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22541         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22542
22543 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22544
22545         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22546
22547         * *-amd64*.*: Ongoing AMD64 work.
22548
22549 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22550
22551         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22552
22553         * *-amd64*: Ongoing AMD64 work.
22554
22555         * mini-arch.h: Add AMD64 support.
22556
22557         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22558
22559         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22560
22561         * mini-ops.h: Add new opcodes.
22562
22563         * Makefile.am: Add AMD64 support.
22564
22565         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22566         rules into the inssel-long*.brg files.
22567
22568         * *-amd64.*: Add beginnings of AMD64 backend.
22569
22570 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22571
22572         * mini.c (print_dfn): commenting out the code that prints
22573         the cil. With -O=deadce, this makes -v -v crash.
22574         
22575         * cpu-pentium.md: make checkthis have a length of 2
22576
22577 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22578
22579         * mini-sparc.h: fix implementations of __builtin
22580         functions for Sun compiler for V9.
22581
22582 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22583
22584         * mini.c: use the new stelem.ref wrapper
22585         * exceptions.cs, arrays.cs: new stelem.ref tests
22586
22587 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22588
22589         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22590         new XSP should work with these changes).
22591
22592 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22593         
22594         * inssel-{long32,x86,}.brg: trivial optimizations.
22595         
22596 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22597
22598         * mini.c: load value when emitting box operation in
22599         constrained calls.
22600
22601 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22602
22603         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22604         is one byte shorter than cmp DWORD PTR [eax], 0.
22605
22606 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22607
22608         * inssel-ppc.brg: arguments on the stack are always
22609         relative to the stack pointer (spotted by Neale Ferguson).
22610
22611 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22612
22613         * exceptions-x86.c: delay appending the method name to the trace until
22614         after mono_jit_info_table_find is called, as this gets the real
22615         MonoMethod.
22616
22617 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22618
22619         * aot.c: register roots
22620
22621 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22622
22623         * aot.c : I could just use PLATFORM_WIN32 flag.
22624
22625 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22626
22627         * aot.c : Reverting the previous fix. This time it broke linux build.
22628
22629 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22630
22631         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22632
22633 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22634
22635         * mini.c (handle_stack_args): Remove some more debugging code.
22636         
22637         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22638
22639         * driver.c mini.h aot.c: Allow additional options to be specified with
22640         --aot and pass them to mono_compile_assembly.
22641
22642         * aot.c: Add experimental code to AOT compile all loaded assemblies
22643         on demand and save the code into a cache in the filesystem.
22644
22645         * aot.c: Add support for more wrapper methods.
22646         
22647         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22648         58863.
22649
22650         * cpu-*.md: Remove removed opcodes.
22651
22652         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22653         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22654         related icalls to marshal.c.
22655
22656 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22657
22658         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22659
22660         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22661
22662         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22663
22664 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22665         * liveness.c: If liveness is recomputated we need to reset the information
22666         for each variable. This way, if the liveness range has been narrowed
22667         by optimizations that happened after the last computation, we can return
22668         a smaller range.
22669         
22670         For example, if you have
22671         
22672         {
22673                 int i = 0;
22674                 
22675                 // Tons of code that does not affect i
22676                 
22677                 i = foo ();
22678                 ...
22679         }
22680         
22681         i = 0 is dead code and will be removed by SSA. However, when
22682         linear scan gets to the code, i will still appear to be live
22683         throughout the entire block. This prevents good register allocation.
22684
22685 2004-07-06  Martin Baulig  <martin@ximian.com>
22686
22687         * debug-mini.c (mono_debug_init_method): Allow
22688         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22689         (mono_debug_add_icall_wrapper): New method.
22690
22691         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22692
22693 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22694
22695         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22696         optimization.
22697
22698 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22699
22700         * aot.c (mono_aot_load_method): Fix loading of debug info.
22701
22702 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22703
22704         * aot.c: Add logging support.
22705
22706 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22707
22708         * mini.h: Add prototype for mono_print_method_from_ip.
22709
22710         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22711
22712         * inssel.brg: 64 bit fixes.
22713
22714         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22715         inssel-long32.brg.
22716
22717         * Makefile.am: Add SPARC64 support.
22718
22719 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22720
22721         * aot.c: Fix alignment problems on 32 bit platforms.
22722
22723 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22726         SPARC64.
22727
22728         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22729         problems.
22730
22731         * mini.h: Bump AOT file version. Some 64 bit fixes.
22732
22733 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22734
22735         * inssel-sparc.brg: Add new rule to avoid register moves.
22736
22737         * inssel.brg: Add ldind_to_load_membase helper function.
22738
22739 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22740
22741         * mini.c: OffsetToStringData intrinsic.
22742         
22743 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22746
22747         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22748         regression tests.
22749
22750         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22751 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22752
22753         * mini.c: reinstated mono_compile_get_interface_var()
22754         on x86, too, since the change breaks the Gtk# build there as well.
22755
22756 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22757
22758         * driver.c: remove loop from the default optimizations: it seems to
22759         interact badly with some of the other options (see bug #60613).
22760
22761 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22762
22763         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22764         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22765
22766 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22767
22768         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22769         vararg-using methods.
22770
22771 2004-06-21  Martin Baulig  <martin@ximian.com>
22772
22773         * mini/mini-exceptions.c
22774         (mono_handle_exception): Added `gpointer original_ip' argument.
22775         After calling mono_unhandled_exception(), call
22776         mono_debugger_unhandled_exception() and if that returns true,
22777         restore the context and return.
22778
22779 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * mini-ppc.c: prefer the use of relative branches so
22782         they won't need to be patched in aot code (patch from Patrick Beard).
22783
22784 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22785
22786         * aot.c: patch from Patrick Beard to make the output assembly
22787         more correct for the MacOSX assembler. Small tweak to
22788         generate sane images on Linux/PPC, too.
22789
22790 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22791
22792         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22793         case until bug #59509 is fixed (shows up in #60332).
22794
22795 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22796
22797         * mini.c: make sure the needed wrappers are compiled, too, with
22798         precomp.
22799
22800 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22801
22802         * driver.c: remove NPTL reference in --version output.
22803
22804 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22805
22806         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22807         generate valid assembly for the Mach-O assembler.
22808
22809 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22810
22811         * driver.c: don't include abcrem in the all optimization specifier
22812         since it slows down jit compilation too much for now.
22813
22814 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22815
22816         * mini.c: use BIGMUL only if both operands have the same signage.
22817         * iltests.il: Test for bug 60056. (errors related to signage in
22818         BIGMUL).
22819
22820         r=lupus.
22821
22822 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22823
22824         * mini.c, aot.c: memory leak fixes.
22825
22826 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22827
22828         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22829
22830 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22831
22832         * Makefile.am: remove the -static hack completely, it links in
22833         statically glib as well.
22834
22835 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22836
22837         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22838         * exceptions.cs: make it compile with new mcs/csc.
22839
22840 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22841         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22842         and added relevant test case.
22843
22844 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22845
22846         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22847         regressions in gtk-sharp.
22848
22849 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22850
22851         * exceptions.cs: New regression tests.
22852
22853         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22854
22855 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22856
22857         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22858
22859 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22860
22861         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22862
22863         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22864
22865 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22866
22867         * mini.c (mono_jit_runtime_invoke): Init class in this
22868         method instead of trusting mono_jit_compile_method to
22869         do the work (because wrappers can be in object class)
22870
22871 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22872
22873         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22874
22875         * basic-long.cs: New regression test.
22876
22877 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22878
22879         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22880         and div/rem checks.
22881
22882 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22883
22884         * Makefile.am: fix miguel's change to build mono statically against
22885         libmono (track build dependencies).
22886
22887 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * cfold.c: Some glib versions do not have G_MININT32.
22890
22891 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22892
22893         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22894         with precision of tan, atan, sin and cos, and implemented related
22895         regressions tests (fixes bug 54467, but one new problem appeared and
22896         is not fixed yet).
22897
22898 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22901
22902         * exceptions.cs: Add test for constant folding && division by zero.
22903
22904         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22905         since driver.c is in libmono too, so the optimization was useless.
22906
22907         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22908         variable to driver.c so the compiler can emit more efficient code to
22909         access them.
22910
22911 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22912
22913         * Makefile.am: don't distribute generated inssel.[ch] files.
22914
22915 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22918         into the default appdomain. Fixes #58707.
22919
22920         * jit-icalls.c: Remove the broken approximation for truncl, doing
22921         no conversion is better.
22922
22923         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22924         Fixes #58863.
22925
22926 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22927
22928         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22929         of the mcrxr instruction which is not available on some processors
22930         even if it's documented to be. Implement add and sub overflow correctly
22931         (still not complete for long unsigned). Speed up icalls a bit.
22932
22933 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22934
22935         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22936         we run .cctor in the current domain instead of target_domain.
22937         
22938         Fixes bug #58558, .cctor not being called in -O=shared.
22939
22940 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22941
22942         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22943
22944 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22945
22946         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22947         which can be done with an imm8, do it that way.
22948         (mono_arch_output_basic_block): ditto for a jmp
22949         (mono_arch_emit_prolog): Computate maximum offset of a label.
22950
22951 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22952
22953         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22954         now tries to allocate prefered physical reg's for virtual
22955         regs. This reduces the number of emited spills/loads with
22956         20-30% on our core assemblies.
22957
22958 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22959
22960         * jit-icalls.c: truncl() is not needed and trunc() is
22961         the correct thing to do anyway (bug #58287).
22962
22963 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22964
22965         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22966         if available.
22967
22968 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22969
22970         * driver.c: enable loop optimizations by default.
22971
22972 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22973
22974         * mini-x86.c: fix calc of max loop size when aligning loops start.
22975
22976 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22977
22978         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22979         the stack.
22980
22981 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22982
22983         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22984         should set carry.
22985
22986         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22987
22988         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22989         
22990         * mini.c (inline_method): Allways inline some wrappers even if the cost
22991         is too large. Fixes #58785.
22992
22993         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22994         
22995 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22996
22997         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22998         (crichton@gimp.org). Beginning of support for sparc/linux.
22999
23000         * mini-sparc.c: Optimize retrieval of LMF address.
23001
23002 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23003
23004         * exceptions-ppc.c:  handle alloca in methods with clauses.
23005
23006 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23007
23008         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23009
23010 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23011
23012         * mini.c: Delegate most of the abort signal work to 
23013           mono_thread_request_interruption, which also handles Stop and Suspend
23014           states.
23015
23016 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23019         supports the save/restore lmf opcodes.
23020
23021 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23024         by gcc-3.4 as well.
23025
23026         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23027
23028 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23029
23030         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23031         methods which contain array accesses.
23032
23033         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23034         boundaries. Fixes #58537.
23035
23036         * iltests.il: Add regression test for #58537.
23037
23038 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23039
23040         * mini-x86.c (mono_arch_local_regalloc): Last part of
23041         fix for bug #58633 (releasing register to early).
23042
23043 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23044
23045         * basic-long.cs: Add new regression test.
23046
23047 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23048
23049         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23050         register too early on the chain.
23051
23052 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23053
23054         * mini.c (create_helper_signature): Use a helper function to reduce
23055         the code which needs to be written. Also set the calling convention of
23056         icalls on windows. Fixes #57840.
23057
23058 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23059
23060         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23061         exceptions-ppc.c: added helper function to get the instruction address
23062         from a signal handler context.
23063
23064 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23065
23066         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23067         from gonzalo.
23068
23069 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23070
23071         * helpers.c: Add new env variable to pass args to objdump.
23072         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23073
23074 2004-05-17  Radek Doulik  <rodo@ximian.com>
23075
23076         * Makefile.am (common_sources): added abcremoval.h so it get
23077         disted and daily mono packages on go-mono.com will build again
23078
23079 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23080
23081         * abcremoval.c: Fixed coding style, added copyright header.
23082
23083         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23084
23085         * mini.h: Added prototype for abc removal main function.
23086
23087         * build_relations_propagation_table.pl: Added copyright header.
23088
23089 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23090
23091         * basic-long.cs: reg test for complex ceq_long bug.
23092
23093 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23094
23095         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23096         reg in long and clob case (bug #58343). Fixed/added comments.
23097
23098 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23099
23100         * mini.c (mono_jit_runtime_invoke): Follow new convention
23101         of calling the invoke method with an function pointer.
23102
23103 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23104
23105         * ChangeLog: Fix author of memory leak patch.
23106
23107 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23108
23109         * Makefile.am: fix make dist as well...
23110
23111
23112 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23113
23114         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23115         on archs where pointers are 4 bytes long.
23116
23117         * Makefile.am: Added abcremoval.c source file.
23118
23119         * abcremoval.c: Added abcremoval.c.
23120
23121         * abcremoval.h: Added abcremoval.h.
23122
23123         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23124
23125         * inssel.brg: Enabled bounds check removal.
23126
23127         * mini.c: Added support for abcrem optimization.
23128
23129         * mini.h: Added abcrem optimization label.
23130
23131         * driver.c: Added support for abcrem optimization.
23132
23133         * propagated_relations_table.def: Added propagated_relations_table.def.
23134
23135 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23136
23137         * mini.c, cfold.c: fix style.
23138
23139 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23140
23141         * mini.c: handle issue with the low-level implementation of
23142         some long opcodes (bug #54209).
23143
23144 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23145
23146         * basic.cs: test for my new cmov stuff.
23147
23148 2004-05-13      Patrik Torstensson
23149
23150         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23151         opt and added peephole documentation.
23152
23153 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23154
23155         * tramp-ppc.c: rewrote the generic trampoline code.
23156
23157 2004-05-11      Patrik Torstensson
23158
23159         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23160
23161 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23164
23165         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23166         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23167
23168         * mini.c: Add new icalls for AsAny marshalling.
23169
23170 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23171
23172         * tramp-ppc.c, mini-ppc.c: more cleanups.
23173
23174 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23175
23176         * mini.c: no warnings.
23177
23178 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23179
23180         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23181
23182 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23183
23184         * mini.c: In the thread abort signal handler, if the thread is in the
23185         process of being stoped, don't throw the Abort exception, just stop the
23186         thread.
23187
23188 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23189
23190         * tramp-ppc.c: removed old code.
23191
23192 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23193
23194         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23195         do some simple speed optimizations on ppc.
23196
23197 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23198
23199         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23200         and large offsets in load/store.
23201
23202 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23203
23204         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23205         it causes regressions.
23206
23207 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23208
23209         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23210         support.
23211
23212 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23213
23214         * jit-icalls.c: remove warnings.
23215         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23216         speedups for unsafe code.
23217
23218 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23219
23220         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23221
23222 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23223
23224         * basic-calls.cs: Add new regression test.
23225
23226         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23227         more portable.
23228
23229         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23230
23231         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23232         is no longer used.
23233
23234 2004-05-06      Patrik Torstensson
23235
23236         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23237         long reg allocation in any reg (not only eax:edx) and implemented 
23238         long shl/shr ops in asm instead of helpers.
23239
23240 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23241
23242         * mini-sparc.h: Fix warnings.
23243
23244         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23245         stack.
23246
23247         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23248         separate statement for clarity.
23249
23250         * mini-sparc.c: Update status.
23251
23252 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23253
23254         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23255         here.
23256
23257 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23258
23259         * inssel-ppc.brg: another small pre-release workaround:
23260         we don't do overflow detection for long_sub_un.
23261
23262 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23263
23264         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23265         (also works around a weird ppc bug: 57957).
23266
23267 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23268
23269         * tramp-ppc.c: trampoline fixes.
23270
23271 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23272
23273         * mini-ppc.c: fixed typos.
23274
23275 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23276
23277         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23278         at the top of the stack. Fixed typos. Use a frame registers
23279         for all the methods with exception clauses.
23280
23281 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23282
23283         * exceptions-ppc.c: restore fp registers.
23284
23285 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23286
23287         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23288         order from the stack top (moved the stack room to save the
23289         return value for trace after the param area). Fixed corruption
23290         in restoring registers on unwind.
23291
23292 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23293
23294         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23295
23296 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23297
23298         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23299         and prolog/epilog for methods that use it. Allow
23300         enough param area room for varargs methods. Fix miguel's
23301         breakage in exception handling.
23302
23303 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23304
23305         * Makefile.am: run genmdesc only on current arch.
23306
23307 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23308
23309         * exceptions-x86.c:
23310         * mini-x86.h: fix the build on windows.
23311
23312 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23313
23314         * 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.
23315
23316         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23317
23318         * mini-exceptions.c: New file.
23319         
23320         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23321         Move some parts of the x86 exception handling code to an 
23322         arch-independent file so it can be shared with other ports.
23323
23324 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23325
23326         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23327
23328 2004-04-26  David Waite  <mass@akuma.org>
23329
23330         * driver.c: remove comma from end of enumeration declaration
23331
23332 2004-04-26  Jackson Harper  <jackson@ximian.com>
23333
23334         * driver.c: parse config file before loading first assembly. This
23335         allows the user gac to be enabled/disabled. 
23336         
23337 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23338
23339         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23340         simpler mechanism: we do not care what is encoded initially
23341         (branch absolute or relative), we care about the code and its
23342         target.  I kept the old code for reference for now.
23343
23344         The new code tries first to determine if the jump is anywhere in
23345         the -/+32 absolute meg range, if it succeeds, it encodes using the
23346         absolute branch;  If not, it tried to find something in the
23347         relative range, if not, it uses the handle_thunk code. 
23348
23349 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23350
23351         * exceptions-ppc.c: use the correct ip register on macosx.
23352
23353 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23354
23355         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23356
23357 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23358
23359         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23360         Raise exception on integer divide by zero by hand since the hw
23361         doesn't support it. Handle NaNs in FP compares.
23362
23363 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23364
23365         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23366         code reducing duplication between the platforms and enabled
23367         signal exception handling (on linux for now).
23368
23369 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23370
23371         * exceptions-ppc.c: more macosx support.
23372
23373 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23374
23375         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23376
23377 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23378
23379         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23380
23381 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23382
23383         * iltests.il: more tests.
23384
23385 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23386
23387         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23388         vars as well.
23389
23390 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23391
23392         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23393
23394 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23395
23396         * liveness.c: Mark variables as volatile in all basic blocks reachable
23397         from exception clauses.
23398
23399 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23400
23401         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23402         inlining.
23403
23404 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23405
23406         * iltests.il, basic.cs: more tests for regalloc.
23407
23408 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23409
23410         * iltests.il: Some tests for register allocation modifications
23411         I have locally.
23412
23413 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23414
23415         * exceptions.cs: Add regression test for bug #56782.
23416
23417         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23418         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23419         the beauty of fixing the same thing in 5 different files...
23420
23421 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23422
23423         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23424         methods.
23425
23426 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23427
23428         * mini.c: Add support for STRWLPARRAY marshalling convention.
23429
23430 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23431
23432         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23433         to init the context to setup the regs pointer).
23434
23435 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23436
23437         * exceptions-ppc.c: more exceptions work.
23438
23439 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23440
23441         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23442         not allowed.
23443
23444 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23445
23446         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23447         can use the memory directly.
23448
23449         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23450
23451         add x86_add_membase, x86_sub_membase, x86_mul_membase
23452
23453 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23454
23455         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23456         GENERAL_REGS they were also hardcoded for all PPC ports.
23457
23458         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23459
23460         Remove hard-coded limit for floating point registers, use
23461         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23462
23463         Notice that in MacOS X calling conventions you can fit a lot more
23464         floating point values in registers, so I should update the PInvoke
23465         test to excercise the passing of floating point values on the
23466         stack (currently broken).
23467         
23468 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23469
23470         * tramp-ppc.c (create_trampoline_code): Added
23471         JUMP_TRAMPOLINE_SIZE. 
23472         (ppc_magic_trampoline): Follow the pattern from
23473         x86_magic_trampoline: if code is set to zero, return. 
23474         (create_trampoline_code): Always pass MonoMethod to the jump
23475         trampoline, before it was passing a null.
23476         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23477         share the code with mono_arch_create_jit_trampoline. 
23478
23479         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23480         implemented.
23481         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23482         implemented.  
23483
23484         * cpu-g4.md: Added length for jmp instruction, the worst case
23485         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23486         for save_lmf).
23487
23488 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23489
23490         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23491
23492 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23493
23494         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23495         before each IL instruction.
23496
23497         * mini.c (CEE_BOX): Fix warnings.
23498
23499 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23500
23501         * mini.c: removed a few unused vars and extra whitespace.
23502
23503 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23504
23505         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23506         checks.
23507         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23508         index.
23509         (OP_GETCHR): use the above
23510         (CEE_LDELEMA): use the above.
23511
23512         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23513         version of the generic impl.
23514         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23515         (CEE_LDELEMA): use the above.
23516
23517 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23518
23519         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23520         Fixes #56317.
23521
23522         * iltests.il: Added new regression test for #56317.
23523
23524 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23525
23526         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23527         under NetBSD. Fixes #56450.
23528
23529         * liveness.c (update_gen_kill_set): Fix previous patch.
23530
23531 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23532
23533         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23534
23535 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23536
23537         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23538         ldsfld and ldsflda.
23539
23540         * inssel-sparc.brg: Add more optimizations.
23541
23542         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23543
23544 2004-04-01  Martin Baulig  <martin@ximian.com>
23545
23546         * mini.c (handle_box): New static function; moved the
23547         implementation of CEE_BOX here.
23548         (mono_method_to_ir): Added `constrained_call' variable.
23549         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23550         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23551         mono_method_get_constrained() to get the method.
23552
23553 2004-04-01  Martin Baulig  <martin@ximian.com>
23554
23555         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23556         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23557         (mono_method_to_ir): We don't need these macros anymore since
23558         mono_class_get_full() already takes care of it. 
23559
23560 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23561
23562         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23563         use @function (as doesn't accept #function here) and check the return
23564         value of system and stop if fails.
23565
23566 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23567
23568         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23569
23570 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23573
23574         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23575
23576         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23577         #56223.
23578
23579         * basic-long.cs: Add test for negation of Int64.MinValue.
23580
23581 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23582
23583         * mini-sparc.c: Update status.
23584
23585         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23586
23587         * exceptions-sparc.c: Fix return value in filters.
23588
23589         * inssel-sparc.brg: Fix register allocation in some rules.
23590
23591 2004-03-28  Martin Baulig  <martin@ximian.com>
23592
23593         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23594         if neccessary.  
23595
23596 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23597
23598         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23599         
23600         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23601         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23602         remove unused conv_u4 opcode.
23603
23604         * mini-x86.c: Remove valgrind workaround since it slows down things
23605         even when mono is not run under valgrind.
23606
23607 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23608
23609         * mini-sparc.c: Update status.
23610
23611         * inssel-sparc.brg: Add some optimizations.
23612
23613         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23614         future delay slot filling. Add support for varargs, tail calls and JMP.
23615
23616         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23617         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23618
23619         * inssel.brg: Fix register allocation in OP_ARGLIST.
23620
23621         * inssel.brg: Fix warnings.
23622
23623 2004-03-25  Martin Baulig  <martin@ximian.com>
23624
23625         * mini.c (inflate_generic_field): Removed.
23626         (mini_get_method): Removed, use mono_get_method_full(),
23627         (mini_get_class): Removed, use mono_class_get_full().
23628         (mono_method_to_ir): Pass our generic context to
23629         mono_field_from_token().        
23630
23631 2004-03-25  Martin Baulig  <martin@ximian.com>
23632
23633         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23634         of a `MonoMethod *'.
23635         (mini_get_method): Take a `MonoGenericContext *' instead
23636         of a `MonoMethod *'.
23637         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23638         a new local variable called `generic_context' which holds the
23639         current `MonoGenericContext *'; use it to lookup things.
23640
23641 2004-03-24  Martin Baulig  <martin@ximian.com>
23642
23643         * mini.c (mini_get_class): New static method; if we're inside a
23644         generic instance, inflate the class if neccessary.
23645         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23646
23647 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23648
23649         * iltests.il: New regression test for #55976.
23650
23651         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23652         #55976.
23653
23654 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23657         output.
23658
23659 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23660
23661         * liveness.c: Consider SSA stores as well as loads when making vars
23662         volatile.
23663
23664         * exceptions.cs: New regression tests for register allocation.
23665         
23666 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23667
23668         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23669         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23670           domain lock only to protect puntual access to data structures.
23671           Added access lock for sighash, jit_icall_hash_name, 
23672           jit_icall_hash_addr and domain->code_mp.
23673
23674 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23675
23676         * driver.c: Print SIGSEGV handling method.
23677
23678         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23679
23680         * mini.c (setup_jit_tls_data): Handle case when this is called
23681         multiple times for a thread.
23682
23683         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23684         is different from fbxx_un. Fixes #54303. Also use constants instead of
23685         magic numbers in a lot of places.
23686
23687 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23688
23689         * exceptions.cs: Fix cctor test when --regression is used.
23690
23691 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23692
23693         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23694         for Linux/ppc.
23695
23696 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23697
23698         * inssel-ppc.brg: fixed register assignments for some rules.
23699
23700 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23701
23702         * exceptions.cs: Add test for exceptions in static constructors.
23703
23704         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23705         static constructors outside the domain lock. Fixes #55720.
23706
23707 2004-03-17  Martin Baulig  <martin@ximian.com>
23708
23709         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23710         (inflate_generic_field): Take the `MonoMethod *' instead of the
23711         `MonoClass *' and added support for generic method.
23712         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23713         have a `field->parent->gen_params', only inflate the field if it's
23714         an open constructed type.
23715
23716 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23717
23718         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23719         exception object instead of the preconstructed ones.
23720
23721 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23722
23723         * mini.c: reverted changed to sigsegv_signal_handler commited
23724         accidentally in the previous patch.
23725
23726 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23727
23728         * mini.c:
23729         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23730         running --aot with an old assembly.
23731
23732 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23733
23734         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23735         point values.
23736
23737         * mini-sparc.c: Add support for v9 branches with prediction.
23738
23739 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23740
23741         * mini.c (mini_init): #warning is GNUC only
23742
23743         * mini-sparc.h: implement __builtin_frame_address
23744         and __builtin_return_address for Sun C compiler
23745
23746 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23747
23748         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23749
23750 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23751
23752         * basic-calls.cs: Add test for unaligned byref long argument passing.
23753
23754         * mini-ops.h: Add sparcv9 compare and branch instructions.
23755
23756         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23757         v9 instructions if we have a v9 cpu.
23758
23759         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23760         registers for global allocation.
23761
23762         * exceptions-sparc.c: Fixes.
23763         
23764 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23765
23766         * liveness.c (mono_analyze_liveness): Optimized version.
23767
23768         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23769
23770         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23771         sparc work.
23772
23773         * basic-float.cs basic-calls.cs: New regression tests.
23774
23775 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23778         sigaltstack implementation.
23779
23780         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23781         
23782         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23783         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23784
23785 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23786
23787         * mini.c: Fix warnings.
23788         
23789         * mini.c (mono_resolve_patch_target): New function which contains the
23790         arch independent part of the patching process.
23791
23792         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23793         patching code to a separate function.
23794
23795 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23796
23797         * mini.c (add_signal_handler): ifdef out on Windows
23798
23799 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23800
23801         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23802         cpu-sparc.md: Add exception handling support + other fixes.
23803
23804         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23805         typed GC detection in --version.
23806
23807         * basic.cs exceptions.cs: New regression tests.
23808
23809         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23810         the arch specific code can store data during a compilation.
23811
23812         * mini-ops.h: Add OP_SETFRET.
23813
23814         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23815         function, register a separate icall for each arity, so the icalls can
23816         get a wrapper.
23817         
23818         * mini.c (mono_print_tree): Print negative offsets in a more readable
23819         form.
23820         
23821         * mini.c: Make signal handling work on sparc.
23822         
23823         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23824
23825         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23826
23827         * jit-icalls.c: Emulate truncl by aintl on solaris.
23828
23829         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23830
23831 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23832
23833         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23834
23835 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23836
23837         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23838         a MarshalByRef type, inline a method that performs the check, taking into
23839         account that the object can be a proxy. Also implemented tow new opcodes:
23840         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23841         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23842         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23843
23844 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23845
23846         * mini-ppc.c: if a relative branch displacement is too big
23847         but it points to and area reachable with an absolute branch, 
23848         avoid the thunks.
23849
23850 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23851
23852         * mini.c: optimize small copies in cpblk.
23853
23854 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23855
23856         * basic-calls.cs basic-float.cs: New regression tests.
23857
23858         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23859         negative offsets from %fp. Implement localloc. Fix local register 
23860         allocation. Fix the case when the this argument needs to be saved to
23861         the stack. Implement some missing opcodes.
23862
23863 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23864
23865         * mini.c (mini_method_compile): Reenable global regalloc in methods
23866         with exception handlers.
23867
23868         * linear-scan.c (mono_varlist_sort): Fix warning.
23869
23870         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23871
23872         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23873         regalloc costs.
23874
23875         * liveness.c: Make all variables uses in exception clauses volatile, to
23876         prevent them from being allocated to registers. Fixes #42136.
23877
23878 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23879
23880         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23881         causes regressions.
23882
23883         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23884         argument to mono_arch_regalloc_cost.
23885
23886         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23887         precisely.
23888
23889 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23890
23891         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23892         Make the cost of allocating a variable to a register arch dependent.
23893
23894         * basic-calls.cs: Fix compilation of tests.
23895         
23896         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23897         helper function to cut back on the number of #ifdefs needed.
23898
23899         * mini-ppc.c: Fix compilation.
23900
23901         * basic-calls.cs: New regression tests.
23902
23903         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23904
23905         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23906         of l0 since that is callee saved.
23907
23908         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23909         to virtual calls.
23910
23911         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23912         of delay instruction.
23913
23914         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23915
23916         * mini.h (MonoCallInst): Add 'virtual' flag.
23917
23918         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23919
23920 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23921
23922         * *.cs: New regression tests.
23923
23924         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23925         work.
23926
23927         * mini.c (mono_runtime_install_handlers): Fix build.
23928
23929         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23930         'signal_stack_size' members.
23931
23932         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23933         alternate signal stack.
23934
23935         * exceptions-x86.c: Add stack overflow handling.
23936
23937         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23938         functions to arch independent code.
23939
23940         * mini.c (mono_print_tree): Print more detailed info for load_membase
23941         opcodes.
23942         
23943 2004-02-23  Martin Baulig  <martin@ximian.com>
23944
23945         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23946
23947 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23948
23949         * mini-x86.c: fixed reg allocation for div/rem.
23950
23951 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23952
23953         * driver.c (mono_main): Report some configuratio options on --version.
23954
23955 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23956
23957         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23958         low in the address space. Correctly flush memory in thunks where we
23959         output native code.
23960
23961 2004-02-20  Martin Baulig  <martin@ximian.com>
23962
23963         * mini.c (mini_get_method): New static method; inflate all generic
23964         methods and methods in open generic instances.
23965         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23966         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23967
23968 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23969
23970         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23971
23972         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23973
23974 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23975
23976         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23977
23978         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23979         it compile using Sun's compiler.
23980
23981 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23982
23983         * 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.
23984
23985         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23986
23987 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23988
23989         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23990         code.
23991         * mini-ppc.c: handle calls outside of the allowed range with thunks
23992         allocated using the code manager.
23993         * tramp-ppc.c: use the code manager to hold generated native code.
23994         Fixed the magic trampoline to just patch vtable entries.
23995
23996 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23997
23998         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23999         independent file.
24000
24001 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24004         PPC.
24005
24006         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24007         if we have a working __thread implementation.
24008
24009         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24010         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24011
24012 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * mini-x86.c: Fix compilation under gcc 2.
24015         
24016 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24019         contains a call to the wrapped function.
24020
24021         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24022         OP_<CALL>_IMM opcodes, and use them under X86.
24023         
24024         * mini.c (mono_jit_find_compiled_method): Fix warning.
24025
24026         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24027
24028         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24029
24030         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24031         functionality to mini.c.
24032
24033         * mini.c (mono_create_jump_trampoline): New function to create a jump
24034         trampoline. Return a compiled method instead of a trampoline if it
24035         exists. Add a cache for jump trampolines.
24036
24037         * mini.c (mono_jit_find_compiled_method): New function to return a
24038         compiled method if it exists.
24039
24040         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24041         mono_arch_create_jit_trampoline.
24042
24043         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24044         a jump trampoline. Fixes #52092.
24045         
24046 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24047
24048         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24049         which is not up-to-date. Add check_corlib_version () instead.
24050
24051         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24052         have to call it.
24053         
24054         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24055         since newer valgrind versions do not need it.
24056
24057         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24058         compile a method with a given set of optimizations.
24059
24060         * mini.c: Compile icall wrappers on-demand instead of at startup.
24061
24062         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24063         wrapper for an icall.
24064
24065 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24066
24067         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24068         #54063.
24069
24070         * iltests.il: Add test for non-empty stack before switch instruction.
24071
24072 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24073
24074         * mini.c: Add support for new stringbuilder marshalling conventions.
24075
24076         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24077
24078 2004-02-01  Martin Baulig  <martin@ximian.com>
24079
24080         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24081         in `ginst->mtype_argv'.
24082
24083 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24084
24085         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24086         facilitate grepping.
24087
24088 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24089
24090         * mini.c: fixed buglet in initobj generic implementation for references.
24091
24092 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24093
24094         * Makefile.am: make the version script conditional.
24095         * jit-icalls.c: handle missing truncl().
24096
24097 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * exceptions.cs: Add more tests for double->int conversion.
24100
24101         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24102         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24103
24104 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24105
24106         * driver.c: make --verbose --version emit an error
24107         if the loaded corlib doesn't match the runtime version.
24108
24109 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24110
24111         * mini-ppc.h: export ppc_patch().
24112         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24113         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24114         on par or better than on MacOSX.
24115
24116 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24119         mono_lookup_pinvoke_call.
24120
24121         * mini-x86.c: Under windows, the default pinvoke calling convention is
24122         stdcall. Fixes #52834.
24123
24124         * mini.c (optimize_branches): Add an upper bound to the number of
24125         iterations to prevent infinite loops on strange loops. Fixes #53003.
24126
24127 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24128
24129         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24130         and ISINST. Fixes #52093.
24131
24132         * objects.cs (test_0_vector_array_cast): New tests.
24133         
24134 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24135
24136         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24137         checking in Array.Set ().
24138
24139         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24140         #52590.
24141
24142         * object.cs (test_0_multi_array_cast): New regression test.
24143
24144 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24145
24146         * exceptions-ppc.c: fix build on Linux/PPC.
24147
24148 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24149
24150         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24151         running under valgrind.
24152         (x86_magic_trampoline): Fix build bustage.
24153
24154         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24155         negative values as well. This is needed for the encoding of the line number
24156         info, since sometimes the line numbers are not in increasing order.
24157
24158 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24159
24160         * cpu-pentium.md (localloc): Increase the size of the localloc 
24161         instruction since it is a loop under Win32.
24162
24163         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24164         allocation.
24165
24166 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24167
24168         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24169         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24170         Max Horn (max@quendi.de). Fix file names in comments.
24171
24172 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24173
24174         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24175         avoid stack overflow.
24176         (replace_usage): Avoid uninitialized variable warnings.
24177
24178         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24179         and taking the address of valuetype variables.
24180
24181 2004-01-03  Patrik Torstensson
24182
24183         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24184         for other purposes than FP later on.
24185
24186 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24187
24188         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24189         of tail calls.
24190
24191 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24192
24193         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24194
24195 2003-12-30  Patrik Torstensson <p@rxc.se>
24196
24197         * mini-x86.h: Decreased number of availiable fp regs.
24198         Solves corner cases with FP spilling.
24199
24200 2003-12-23  Patrik Torstensson <p@rxc.se>
24201
24202         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24203         for floating point stack tracking / spilling on x86. 
24204         Fixes bug #49012.
24205         
24206         * basic-float.cs: added float mul overflow test.
24207
24208 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24209
24210         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24211
24212 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24213
24214         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24215         supports for cond branches that overflow the immediate
24216         overflow offset. mcs can compile simple programs.
24217
24218 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24219
24220         * exceptions-ppc.c: exception handling support wip:
24221         finally handlers get run on exception.
24222
24223 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24226         profiling.
24227
24228 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24229
24230         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24231         initial support for stack walking and unwinding.
24232
24233 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24234
24235         * driver.c (mono_main): Make corlib-out-of-sync message more 
24236         descriptive. Also remove verify_corlib call.
24237
24238 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24239
24240         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24241         not overlap with other call's arguments, too.
24242
24243 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24244
24245         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24246         move to arch-specific code the choice of arch-specific
24247         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24248         * mini.c: ensure emulation calls will not interleave
24249         with other calls.
24250
24251 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24252
24253         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24254         the magic trampoline stack frame is dropped before executing
24255         the new method.
24256
24257 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24258
24259         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24260         and integer to fp conversions. Added support for overflowing
24261         arguments on the stack. Reserve a couple more registers as temps.
24262         Added support for aot compilation (as output still needs to be
24263         tweaked, though).
24264
24265 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24266
24267         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24268         Don't overwrite return register in some corner cases.
24269
24270 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24271
24272         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24273         static constructors when AOT compiling.
24274
24275         * driver.c (mono_main): Call mono_check_corlib_version.
24276
24277 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24278
24279         * cpu-g4.md, basic.cs: fixed div target register.
24280
24281 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24282
24283         * mini-ppc.c, basic.cs: shl_imm fix with test.
24284
24285 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24286
24287         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24288         structures by value. Misc fixes.
24289         * objects.cs: more tests.
24290
24291 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24292
24293         * mini-ppc.c: lconv.ovf.i implemented.
24294
24295 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24296
24297         * mini.c:
24298         (mini_init): don't error out if someone already called g_thread_init.
24299
24300 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24301
24302         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24303         to be any type per the spec. Fix abnormal memory usage when
24304         the same object is repeatedly thrown.
24305
24306 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24307
24308         * mini.c: check for overruns in IL code.
24309
24310 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24311
24312         * TODO: Add/remove some todo entries.
24313
24314 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24315
24316         * driver.c (mono_main): Call mono_verify_corlib.
24317
24318 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24319
24320         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24321         This has been moved to mini.c
24322         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24323         type being casted is marshalbyref it could be a proxy, so instead of
24324         emitting the type check code, emit a call to a runtime method that will
24325         perform the check by calling CanCastTo if needed.
24326
24327 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24328
24329         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24330         methods with large stack frames under Win32.
24331
24332 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24333
24334         * Makefile.am: Distribute regression tests.
24335
24336         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24337         at the end instead of inserting each variable into the sorted list.
24338
24339         * linear-scan.c (mono_varlist_sort): New helper function.
24340         
24341 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24342
24343         * mini.c: ensure arguments and locals are within bounds.
24344
24345 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24346
24347         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24348         related fixes.
24349
24350 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24351
24352         * mini.c (mono_cprop_copy_values): Fix crash.
24353
24354         * aot.c: Set verbosity back to 0.
24355         
24356 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24357
24358         * regalloc.c: complete memory leak fix by Laurent Morichetti
24359         (l_m@pacbell.net).
24360
24361 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24362
24363         * driver.c (main_thread_handler): Revert the previous patch.
24364
24365         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24366         under valgrind.
24367
24368         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24369         memory from the memory pool.
24370
24371         * driver.c (main_thread_handler): Turn on all optimizations when
24372         --aot is used.
24373
24374         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24375         an array for better performance.
24376
24377         * regalloc.c (mono_regstate_assign): Fix memory leak.
24378
24379         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24380         serialize the debug info.
24381
24382         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24383         debug info from the serialized representation.
24384
24385         * aot.c: Save debug info into the generated file and load it when 
24386         loading a method.
24387
24388         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24389
24390 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24391
24392         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24393         More FP-related fixes.
24394
24395 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24396
24397         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24398         and register allocation buglet. Hello world now runs.
24399
24400 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24401
24402         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24403         * tramp-ppc.c: fixed class init trampoline.
24404         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24405
24406 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24407
24408         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24409         mini.c: more ppc changes/fixes.
24410
24411 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24412
24413         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24414         Also optimize the case when the arguments are the same in the caller 
24415         and in the callee.
24416
24417         * iltests.il: Add tests for tail calls with valuetype arguments.
24418
24419 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24420
24421         * mini-ppc.c: fixes for struct return type.
24422
24423 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24424
24425         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24426         mono_spillvar_offset() to arch-specific code.
24427
24428 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24429
24430         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24431
24432 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24433
24434         * exceptions-x86.c: Fix stack space leaks.
24435         
24436         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24437         registers from the lmf if the method has save_lmf set.
24438
24439 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24440
24441         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24442         of icall wrappers into InvokeInDomain, since these are now per-domain.
24443
24444 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24445
24446         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24447         make some opcode emulation and intrinsic ops enabled/disabled 
24448         according to the architecture. More fixes.
24449
24450 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24451
24452         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24453
24454 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24455
24456         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24457         arch-specific handling for 'this' and struct return type to
24458         arch-specific code.
24459
24460 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24461
24462         * aot.c: prevent divide by zero error when reporting (it happened with
24463         Accessibility.dll).
24464
24465 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24466
24467         * mini.h (inst_switch): Remove unused macro.
24468
24469 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24470
24471         * aot.c:
24472         (load_aot_module): free 'info->methods' and 'info' properly. No more
24473         "free(): invalid pointer blah" messages when you have an old aot
24474         compiled assembly.
24475
24476 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24477
24478         * jit-icalls.c, mini.c: Added support for context static fields.
24479
24480 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24481
24482         * mini.c (mono_method_blittable): Methods which set LastError are not 
24483         blittable either. Fixes #51108.
24484         
24485 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24486
24487         * mini.c: flush icache.
24488         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24489
24490 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24491
24492         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24493
24494 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24495
24496         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24497         safe on IA32.
24498
24499         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24500         vararg calls.
24501
24502         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24503
24504 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24505
24506         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24507         instruction when the result is discarded.
24508
24509         * iltests.il (test_0_div_regalloc): New regression test.
24510
24511         * arrays.cs: Fix compilation error.
24512
24513 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24514
24515         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24516         float rules to inssel-x86.brg: sane architectures with FP registers
24517         don't need to implement these rules.
24518
24519 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24520
24521         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24522
24523 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24524
24525         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24526         implementation of 32 bit systems.
24527
24528 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24529
24530         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24531         (Jeroen Zwartepoorte).
24532
24533 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24534
24535         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24536         the caller and the callee matches.
24537         
24538         * mini.c (mono_method_to_ir): Add comment.
24539
24540         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24541         signbit is missing on some platforms.
24542
24543 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24544
24545         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24546
24547         * mini.c (setup_jit_tls_data): Call the new function.
24548         
24549         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24550
24551         * mini-x86.c: Add experimental support for fast access to the lmf
24552         structure under NPTL/Linux 2.6.x.
24553
24554 2003-11-06  Martin Baulig  <martin@ximian.com>
24555
24556         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24557         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24558         the debugger.
24559
24560 2003-11-02  Martin Baulig  <martin@ximian.com>
24561
24562         * mini.c (inflate_generic_field): New static method.
24563         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24564         generic instance and the field is declared in a generic type, call
24565         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24566
24567 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24568
24569         * mini.h mini.c (mono_method_same_domain): New function to return
24570         whenever the caller and the callee are in the same domain.
24571
24572         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24573
24574 2003-10-30  Martin Baulig  <martin@ximian.com>
24575
24576         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24577         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24578         method parameters.
24579         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24580         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24581
24582 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24583
24584         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24585         propagation.
24586
24587         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24588         object here, so it is in the correct appdomain etc.
24589
24590 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24591
24592         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24593         already done.
24594         (mono_method_to_ir): Avoid freeing the type created returned from
24595         mono_type_create_from_typespec, since it is put into an internal cache
24596         by the function. Fixes pointer.exe.
24597
24598         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24599         trampolines for icalls and pinvokes as well. Fixes #33569.
24600
24601 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24602
24603         * mini.c: Update after appdomain changes.
24604
24605         * mini.c (mono_jit_compile_method_inner): Allways compile native
24606         method wrappers in the root domain, since there can only be one
24607         instance of them, whose address is stored in method->info.
24608
24609 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24612         environment variable. Instead detect automatically whenever running
24613         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24614         valgrind.h.
24615
24616 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24617
24618         * trace.c, trace.h: New files that implement the new trace option
24619         parsing. 
24620
24621         * driver.c: Document new --trace options.
24622
24623         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24624         mini-x86.c: Apply:
24625
24626         -       if (mono_jit_trace_calls)
24627         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24628
24629         * mini.h: prototypes.
24630         
24631 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24632
24633         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24634
24635         * mini.c inssel.brg: Implement typedefbyref opcodes.
24636
24637         * mini.c (mono_jit_compile_method): Remove unused local variable.
24638
24639         * mini.c (mono_jit_compile_method_inner): Ditto.
24640         
24641 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24642
24643         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24644         
24645         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24646
24647 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24648
24649         * mini.c (mono_no_aot): Remove unused global variable.
24650
24651         * mini.c: Thread safety fixes.
24652
24653 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24654
24655         * mini.c (mono_create_class_init_trampoline): Add a lock around
24656         class_init_hash_addr.
24657
24658         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24659         #30073.
24660
24661         * mini.c: Decompose the NEWARR instruction before decomposing its
24662         arguments. Fixes #30073.
24663
24664 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24665
24666         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24667         convention.
24668
24669 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24672
24673         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24674
24675         * driver.c: Add support for compiling icall wrappers to --compile.
24676
24677 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * inssel.brg: The empty value in class->interface_offsets is -1, not
24680         0. Fixes #49287.
24681
24682 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24683
24684         * objects.cs: New test for 'is' operator on an array of interfaces.
24685
24686 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24687
24688         * tramp-ppc.c: update trampoline code to support jumps
24689         and class initialization.
24690
24691 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24694
24695         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24696
24697         * inssel.brg (OP_UNBOX): Remove unused rule.
24698
24699         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24700         region instead of one for each method. Fixes #47813.
24701
24702 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * exceptions.cs (test_0_nested_finally): New regression test for
24705         nested exception handlers.
24706
24707         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24708
24709         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24710
24711         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24712         inlining.
24713
24714         * mini.c (mono_method_check_inlining): Make the inlining limit 
24715         configurable by an environment variable.
24716         
24717         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24718
24719         * mini.h: Bump AOT file version.
24720
24721         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24722         token, store the image along with the token, since the token might not 
24723         refer to the same image as the method containing the relocation, 
24724         because of inlining.
24725
24726 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24727
24728         * mini.c (mono_precompile_assemblies): New function to compile
24729         all methods in all loaded assemblies.
24730
24731         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24732
24733         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24734         iassign and fassign to int*, since they can contain large negative
24735         values if the register is spilled. Also added some comments. Fixes
24736         #45817.
24737
24738         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24739         under Win32. Fixes #42964.
24740
24741 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24744
24745         * aot.c: Added support for AOT compiling methods which contain calls
24746         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24747         handled.
24748         
24749         * driver.c (compile_all_methods): Run the compilation in a thread
24750         managed by mono. Fixes #44023.
24751
24752         * mini.c (mono_codegen): Print full method name in verbose output.
24753
24754         * mini-x86.c (mono_arch_patch_code): Fix warning.
24755         
24756         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24757         jumps, since the method we are jumping to might be domain-specific.
24758
24759         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24760
24761 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24762
24763         * inssel.brg: string chars are unsigned.
24764
24765 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24766
24767         * TODO: New todo item.
24768
24769         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24770         which calls mono_runtime_class_init and patches the call site to
24771         avoid further calls.
24772         (mono_arch_create_class_init_trampoline): New arch specific function 
24773         to create a class init trampoline.
24774         (create_trampoline_code): Generalized so it can create
24775         class init trampolines as well.
24776
24777         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24778         (mono_create_class_init_trampoline): New function to create and cache
24779         class init trampolines.
24780         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24781         vtable given the address of a class init trampoline. Used by the
24782         patching process.
24783         (mono_codegen): Generate a call to a trampoline instead of
24784         mono_runtime_class_init in LDSFLD[A].
24785         (mono_codegen): Add relocations for the new trampoline.
24786         
24787         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24788         MONO_PATCH_INFO_CLASS_INIT.
24789
24790         * mini.h: Bump AOT version number.
24791
24792         * aot.c: Create a copy of the loaded code instead of using the original
24793         so methods which call each other will be close in memory, improving
24794         cache behaviour.
24795         
24796         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24797         patch since it breaks the regression tests.
24798         
24799         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24800         for the register saving instruction sequence since the 
24801         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24802
24803 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24804
24805         * TODO: Fix todo item && remove another.
24806
24807 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24808
24809         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24810         previous checkin.
24811
24812         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24813         function of the module.
24814
24815         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24816         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24817         --no-aot command line option.
24818
24819 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24820
24821         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24822         by Bernie Solomon (bernard@ugsolutions.com).
24823
24824         * inssel.brg: Refactor the interface offset table related code into
24825         its separate functions and add support for the AOT case.
24826
24827 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24830         
24831         * aot.c: Added mono_aot_verbose variable and made all debugging
24832         output depend on the value of this variable.
24833
24834         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24835         method_label and info_label.
24836
24837         * mini.h mini-x86.c aot.c: Added a new relocation type 
24838         MONO_PATCH_INFO_IID for klass->interface_id.
24839
24840         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24841         the MonoJitInfo structure.
24842
24843         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24844         a non-root appdomain in shared mode.
24845
24846 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24847
24848         * aot.c: make aot loader less verbose. Remove free of unused variable.
24849
24850 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24851
24852         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24853
24854         * .cvsignore: Added *.dll.
24855
24856         * mini.c (mono_print_tree_nl): New function callable while debugging.
24857
24858         * mini.c (mono_print_code): Export this.
24859
24860         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24861         patched code.
24862
24863 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24864
24865         * mini.h (MonoCompile): Added 'jit_info' field.
24866
24867         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24868         the cfg structure, since it is needed by the AOT compiler.
24869
24870         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24871
24872         * aot.c: A major rewrite. Changes include:
24873         - save exception tables for methods which have them.
24874         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24875         to g_module_symbol.
24876         - reworked the file format so it is now much smaller and needs
24877         fewer relocation entries.
24878         
24879 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24880
24881         * aot.c (load_aot_module): Fix build bustage on platforms without
24882         Boehm GC.
24883
24884 2003-09-04  Martin Baulig  <martin@ximian.com>
24885
24886         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24887
24888 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24889
24890         * TODO: Some new optimization ideas.
24891
24892         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24893
24894         * aot.c: Save the optimization flags used to compile the code into
24895         the AOT module.
24896
24897         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24898         support emitting domain specific code.
24899         
24900         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24901         no longer domain neutral. It can be made domain neutral by compiling 
24902         with --optimize=shared.
24903
24904         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24905         between appdomains.
24906
24907         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24908         loading of AOT code.
24909
24910         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24911         
24912         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24913         if there is no domain neutrality information.
24914
24915 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24916
24917         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24918         format version into the generated library.
24919
24920         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24921         callee method into the caller since one of them could be shared.
24922
24923         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24924         system exceptions from AOT code now works.
24925
24926         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24927         method if it is domain neutral and the callee is not.
24928
24929         * graph.c (cfg_emit_one_loop_level): Fix warning.
24930
24931 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24932
24933         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24934         last checkin.
24935
24936 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24937
24938         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24939         is needed  by code which is executed before mono_runtime_init ().
24940         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24941         
24942         * mini.c (mono_thread_abort): Fix warning.
24943         (mono_jit_compile_method): Call static constructor in the AOT case too.
24944
24945         * aot.c (mono_compile_assembly): Fix warning.
24946
24947 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24948
24949         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24950
24951 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24952
24953         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24954
24955         * cpu-pentium.md: Fix the length of call opcodes so they include the
24956         ESP restoring instruction. Fixes #47968.
24957
24958 2003-08-28  Martin Baulig  <martin@ximian.com>
24959
24960         * mini-x86.c (mono_arch_call_opcode): Added support for
24961         MONO_TYPE_GENERICINST.
24962
24963         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24964
24965 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24966
24967         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24968         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24969
24970         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24971         metadata_section.
24972
24973 2003-08-26  Martin Baulig  <martin@ximian.com>
24974
24975         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24976         when reporting an error, set this to the actual error location.
24977         (mono_method_to_ir): Report the correct error location if
24978         get_basic_blocks() returned an error.
24979
24980 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24981
24982         * mini.c (mono_type_blittable): OBJECT is not blittable.
24983         (mono_method_blittable): Methods which have marshalling descriptors
24984         are not blittable either. Fixes #47842.
24985
24986 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24987
24988         * driver.c mini.c: Use an environment variable instead of a global 
24989         variable. Also fix the build.
24990
24991         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24992         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24993         reporting this. 
24994
24995         * driver.c mini.c: Added --with-valgrind option to turn off some
24996         code which prevents mono from running under valgrind.
24997
24998         * mini.c (mono_emit_call_args): Fixed warning.
24999
25000         * mini.c (mono_emulate_opcode): Fixed warning.
25001
25002 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25003
25004         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25005         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25006         regalloc.c, regalloc.h: specify available registers in arch-specific
25007         code and support floats in the regallocator (patch by Laurent Morichetti 
25008         <l_m@pacbell.net>)
25009
25010 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25011
25012         * mini.c: mono_thread_current() can be called only after
25013         mono_runtime_init(): rearrange code to not call it early on.
25014
25015 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25016
25017         * mini.c: allocate jump tables in the code mempools.
25018
25019 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25020
25021         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25022         freed.
25023
25024 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25025
25026         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25027         12 to 16.  This fixes bug #47453.
25028
25029
25030 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25031
25032         * mini-ppc.c: fixed indexed load and unsigned compares.
25033
25034 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25035
25036         * mini.c: reenabled installation of handler for
25037           thread abort signal.
25038
25039 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25040
25041         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25042         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25043         until it's fixed and actually useful.
25044
25045 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25046
25047         * inssel-long32.brg: couple more opcodes implemented.
25048
25049 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25050         
25051         * mini-sparc.c: Even more opcodes implemeted.
25052
25053 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25054
25055         * mini-sparc.c: More opcodes implemented.
25056
25057 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25058
25059         * mini-sparc.c: More opcodes implemented.
25060
25061 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25062
25063         * inssel-sparc.brg: Add some needed rules.  Direct
25064         copy from PPC.
25065         * Makefile.am: Use inssel-sparc.brg
25066         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25067         an assert happy for now.
25068
25069 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25070
25071         * mini-sparc.c: Fixed compile errors.
25072         * exceptions-sparc.c: Same.  We now produce a mono binary 
25073         on sparc-linux.  Yea.
25074
25075 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25076
25077         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25078         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25079         They compile, but do not work.
25080
25081 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25082
25083         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25084         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25085         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25086         (ct@gentoo.org).
25087
25088 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25089
25090         * mini.c: more opcodes implemented and better support for generics.
25091
25092 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25093
25094         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25095         * mini.c, mini.h: first cut at generics support: some new instructions 
25096         added and changed the behaviour of some of the existing ones.
25097
25098 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25099
25100         * mini.c: Removed definition of metadata_shared mutex here.
25101
25102 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25103
25104         * mini-x86.c: make vararg calls work for instance methods.
25105
25106 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25107
25108         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25109         returns the arguments in a separte list, now.
25110
25111 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25112
25113         * aot.c, mini.c: updates for array type representation changes.
25114
25115 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25116
25117         * mini.c: register function to perform jit shutdown.
25118
25119 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25120
25121         * mini.c: use a faster allocator if possible.
25122
25123 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25124
25125         * aot.c: some cleanups and portability changes.
25126
25127 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25128
25129         * mini.c: use faster allocation for CEE_BOX if possible.
25130
25131 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25132
25133         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25134         Moved inlined mempcy code to its own function so that is can be
25135         reused. Added an inline memset function as well (optimized initobj).
25136         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25137
25138 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25139
25140         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25141
25142 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25143
25144         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25145         arch code can setup the cpu for CLR execution, if needed.
25146         We use it on x86 to set the precision of FP operations.
25147
25148 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25149
25150         * mini.c: disable some optimizations if we can guess they'll cost too
25151         much for a given method.
25152
25153 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25154
25155         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25156         
25157 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25158         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25159         info collection support.
25160
25161 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25162
25163         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25164         is now implemented in the profiling API. Get rid of a couple of
25165         unnecessary global variables.
25166
25167 2003-06-15  Nick Drochak <ndrochak@gol.com>
25168
25169         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25170         * cpu-g4.md: add op_bigmul and op_bigmul_un
25171         * cpu_pentium.md: add op_bigmul_un
25172         * inssel-long32.brg: add rule for unsigned bigmul
25173         * mini-ops.h: define OP_BIGMUL_UN
25174         * mini-x86.c: THE BUG: handle (un)signed properly
25175         * mini.c: choose unsigned opcode if needed.
25176         This set of patches fixes bug #44291
25177
25178 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25179
25180         * mini.c (optimize_branches): improved to handle all kinds of
25181         conditional branches.
25182
25183 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25184
25185         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25186         don't raise exceptions.
25187
25188 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25189
25190         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25191         to arch-specific files.
25192
25193 2003-06-09  Martin Baulig  <martin@ximian.com>
25194
25195         * Makefile.am (libs): Added $(LIBGC_LIBS).
25196
25197 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25198
25199         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25200         and OP_ATAN (fixes bug#44293).
25201
25202 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * Makefile.am, mini-x86.c: rename cpu description array to
25205         pentium_desc, since some compilers define the 'pentium' preprocessor
25206         symbol.
25207
25208 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25209
25210         * mini.c (mini_select_instructions): add explicit branch if the
25211         following block is not the false target of a conditional branch -
25212         we need this with any optimization that reorder or remove bblocks
25213
25214         * mini.c (optimize_branches): bug fixes
25215
25216 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25217
25218         * mini.c (mono_method_to_ir): inline static readonly fields
25219
25220         * ssa.c (fold_tree): start cfold support for long (very simple
25221         cases only)
25222
25223         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25224
25225 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25226
25227         * inssel.brg: fixed memcpy (bug #44219).
25228
25229 2003-06-05  Dick Porter  <dick@ximian.com>
25230
25231         * driver.c: Set the glib log levels to not abort if g_message
25232         recurses.
25233
25234         g_set_prgname() has to happen before mini_init() so that the
25235         process handle gets the info.
25236         
25237 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25238
25239         * driver.c: add intrins to the default optimizations to get wider
25240         exposure.
25241
25242 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25243
25244         * mini.h: some large basic blocks will overflow a 16-bit
25245         integers for symbolic registers.
25246
25247 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25248
25249         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25250         (mono_arch_output_basic_block): fix bug 43499 
25251
25252 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25253
25254         * mini.c: kill duplicated definition of mono_debug_format.
25255
25256 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini-x86.c, arrays.cs: fixed register allocation bug.
25259
25260 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25261
25262         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25263
25264         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25265
25266 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25267
25268         * mini.c:
25269         (print_method_from_ip): also print source location information if
25270         available.
25271
25272 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25273
25274         * mini.c (mono_find_block_region): bug fix in region code
25275         (mini_method_compile): enable removing unreachable code again, but
25276         only in methods without exception clauses.
25277
25278 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25279
25280         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25281         Implemented arglist opcode and handling of TypedReference type.
25282         Fixed x86 call convention when a structure is returned.
25283         Minimal support for calling static vararg methods.
25284
25285 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25286
25287         * mini.c (mini_method_compile):  always remove unreachable code,
25288         because the code in them may be inconsistent  (access to dead
25289         variables for example).
25290
25291 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25292
25293         * driver.c, debug-mini.c: warning fixes.
25294
25295 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25296
25297         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25298
25299 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25300
25301         * mini.c: thread-static fields are registered in mono_class_vtable(),
25302         so ensure the function is called before checking for them.
25303
25304 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25305
25306         * mini.c (optimize_branches): fix for bug 43586
25307
25308         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25309         overflow (fixes Bug #43639)
25310
25311 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25312
25313         * mini.c, objects.cs: allow the use of stobj for primitive types.
25314
25315 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25316
25317         * mini.c: be less strict about argument checking until we support
25318         running the verifier.
25319
25320 2003-05-27  Nick Drochak <ndrochak@gol.com>
25321
25322         * basic-long.cs: tests for (ulong)int * (ulong)int also
25323         * mini.c: use the same trick for (ulong)int * (ulong)int
25324
25325 2003-05-27  Nick Drochak <ndrochak@gol.com>
25326
25327         * basic-long.cs: add regression test for (long)int * (long)int
25328         * cpu-pentium.md: add op_bigmul specification
25329         * inssel-long32.brg: add OP_BIGMUL rule
25330         * mini-ops.h: add OP_BIGMUL
25331         * mini-x86.c: register allocator: handle case where src1 needs to be
25332         in EAX.
25333         * mini.c: substitute special BIGMUL opcode in the tree for 
25334         (long)int * (long)int
25335
25336 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25337
25338         * jit-icalls.c: call the type ctor on field access if needed.
25339
25340 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25341
25342         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25343         to a method (including results of ldelema, bug#43207).
25344
25345 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25346
25347         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25348         colors to show exception handler blocks.
25349
25350         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25351         (fix for pinvoke7.cs).
25352
25353 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25354
25355         * mini.h, mini.c: ensure correct initialization order for types that
25356         require it. Prepare for lazy compilation of jit icall wrappers.
25357         Provide a name for opcode emulation to reduce unneeded mallocing.
25358
25359 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25360
25361         * mini-x86.c: better register restoring code and profiling
25362         support for tail calls.
25363
25364 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25365
25366         * mini.h, driver.c: prepare for leaf methods optimization.
25367
25368 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25369
25370         * mini.c: get targets of branches before converting a method.
25371
25372 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25373
25374         * mini.c (optimize_branches): added some experimental code (disbaled) 
25375
25376 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25377
25378         * mini.c (optimize_branches): fix branch to branch optimization 
25379
25380         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25381
25382         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25383
25384         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25385
25386         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25387         if needed.
25388
25389 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25390
25391         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25392         enable use of interface variables again.
25393
25394         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25395         I1 to registers because there is no simply way to sign extend 8bit
25396         quantities in caller saved registers on x86.
25397
25398         * inssel-float.brg: set costs of some rules to 2 so
25399         that monobure always select the arch. specific ones if supplied,
25400         regardless of the order we pass the files to monoburg.
25401
25402 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25403
25404         * mini.c, mini-x86.c: since the magic trampoline for jumps
25405         can't patch the code directly, we do it as soon as the
25406         method gets compiled.
25407
25408 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25409
25410         * mini-x86.c, mini.h: introduce a new patching method
25411         to support CEE_JMP and tail calls.
25412         * mini.c: obey tail.call. Don't precompile methods target
25413         of CEE_JMP.
25414         * tramp-x86.c: new trampoline code to handle methods
25415         reached through a jump.
25416
25417 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25418
25419         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25420         bit values to registers
25421
25422 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25423
25424         * mini.c (mono_compile_get_interface_var): share interface
25425         variables if possible.
25426
25427 2003-05-16  Martin Baulig  <martin@ximian.com>
25428
25429         * debug-mini.c (mono_init_debugger): New function to initialize
25430         the debugger.  This is not in the debugger since it needs to
25431         access some of mini's internals.
25432
25433 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25434
25435         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25436
25437 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25438
25439         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25440         for value type handling.
25441
25442 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25443
25444         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25445         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25446
25447 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25448
25449         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25450           the constructor through a proxy.
25451
25452 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25453
25454         * jit-icalls.c, inssel.brg: fixes to array element address
25455         calculations.
25456
25457 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25458
25459         * mini-x86.c (is_regsize_var): allocate pointer to registers
25460
25461 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25462
25463         * driver.c: fixed typo, added intrins to the set of optimizations
25464         tested with regressions.
25465
25466 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25467
25468         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25469         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25470         test case.
25471
25472 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25473
25474         * inssel.brg: remove some common pop instructions without side effects
25475
25476 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25477
25478         * inssel-x86.brg: fixed thinko in int to double conversions.
25479
25480 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25481
25482         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25483
25484 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25485
25486         * inssel-long32.brg: two more missing instructions.
25487
25488 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25489
25490         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25491         if not already set.
25492
25493 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25494
25495         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25496         correctly.
25497
25498         * basic-float.cs: Added tests for negative zero.
25499
25500 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25501
25502         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25503         a couple of missing operations for long casts, with test cases.
25504
25505 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25506
25507         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25508
25509 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25510
25511         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25512         code size estimation.
25513
25514 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25515
25516         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25517         abstract methods (fix bug 42542)
25518
25519         * aot.c: add ability to handle array types
25520         
25521 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25522
25523         * mini.c: Call the _specific versions of the object allocation
25524         functions if possible.
25525
25526 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25527
25528         * driver.c: call setlocale ().
25529
25530 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25531
25532         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25533         windows build.
25534
25535 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25536
25537         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25538
25539         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25540         wrappers (fix bug 42122)
25541
25542 2003-05-04  Martin Baulig  <martin@ximian.com>
25543
25544         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25545
25546         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25547         s/mini_set_defaults/mono_set_defaults/g.
25548
25549 2003-05-04  Martin Baulig  <martin@ximian.com>
25550
25551         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25552
25553 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25554
25555         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25556         (reported by Don Roberts).
25557
25558 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25559
25560         * mini.c: temporarily work around two bugs for this release.
25561
25562 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25563
25564         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25565         that contains -export-dynamic and it makes using the ld script
25566         useless.
25567         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25568
25569 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25570
25571         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25572         specific cpu.
25573
25574 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25575
25576         * mini.c: make sure leave calls all the needed finally blocks,
25577         even when the target jumps out of multiple exception clauses.
25578
25579 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25580
25581         * ldscript, Makefile.am: add linker script to reduce the number of
25582         exported symbols (should also fix the issues with libwine defining
25583         some of the same symbols in io-layer).
25584
25585 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25586
25587         * driver.c (mini_main): Avoid assertion when no file name is given on 
25588         the command line.
25589
25590 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25591
25592         * driver.c: added --version/-V command line option.
25593         Added the inline optimization in the regression tests.
25594
25595 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25596
25597         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25598         to the type in the method signature (fixes bug#42134).
25599
25600 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25601
25602         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25603
25604 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25605
25606         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25607
25608 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25609
25610         * driver.c: fixed bug #42100.
25611
25612 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25613
25614         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25615
25616 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25617
25618         * mini.c: moved most of the code required to do inlining to its own
25619         function so it can be reused. Inline also ctors if appropriate.
25620
25621 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25622
25623         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25624         the runtime can call mono API functions.
25625
25626 2003-04-27  Martin Baulig  <martin@ximian.com>
25627
25628         * debug-mini.c (mono_debug_init_method): Added
25629         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25630         send a notification to the debugger.
25631
25632         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25633         running in the Mono Debugger, just pass the breakpoint number to
25634         mono_debug_init_method().
25635
25636         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25637
25638 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25639
25640         * mini.c: allow some more unsafe compares.
25641
25642 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25643
25644         * mini-x86.c, Makefile.am: make distcheck works (partially from
25645         a patch by Richard Lee <r.h.lee@attbi.com>).
25646         * regset.c, regset.h: removed, they are unused.
25647
25648 2003-04-25  Dick Porter  <dick@ximian.com>
25649
25650         * driver.c: Usage reports the name as 'mono' not 'mini'
25651         * exceptions-x86.c: Build and run on freebsd
25652
25653 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25654
25655         * Makefile.am: install the program with the 'mono' name and
25656         the library as libmono instead of mini and libmini.
25657
25658 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25659
25660         * driver.c: provide the APIs for the embedding interface of the old jit.
25661
25662 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25663
25664         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25665
25666 2003-04-23  Martin Baulig  <martin@ximian.com>
25667
25668         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25669
25670         * driver.c: Added `--debug' command line argument to enable
25671         debugging support.
25672
25673 2003-04-23  Martin Baulig  <martin@ximian.com>
25674
25675         * debug.[ch]: Removed.  The code is now in
25676         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25677
25678         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25679         last six months.
25680
25681 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25682
25683         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25684
25685 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25686
25687         * mini.c:
25688         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25689         mono_domain_finalize.
25690         (mini_method_compile): use mono_method_profile* if the the option is
25691         enabled.
25692
25693 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25694
25695         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25696         methods with their wrapper.
25697
25698         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25699         methods with their wrapper.
25700
25701         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25702         their wrapper.
25703
25704         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25705         wrapper.
25706
25707         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25708         methods.
25709
25710 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25711
25712         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25713
25714 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25715
25716         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25717         of the mempool. This is slightly faster and uses less memory
25718
25719 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25720
25721         * mini.c: avoid O(n) allocation for variables.
25722
25723 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25724
25725         * mini.c: handle items on the stack after inlining methods.
25726
25727 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25728
25729         * mini.c: make the method->opcode optimization dependent
25730         on MONO_OPT_INSTRINS and do it lazily.
25731
25732 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25733
25734         * driver.c: print overall results at the end of regression run.
25735
25736 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25737
25738         * inssel.brg: don't overwrite symbolic registers.
25739
25740 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25741
25742         * inssel-x86.brg: fix conversion from long to float.
25743
25744 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25745
25746         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25747
25748 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25749
25750         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25751
25752         * driver.c: Added --print-vtable option as in the old JIT.
25753
25754 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25755
25756         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25757
25758 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25759
25760         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25761
25762 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25763
25764         * mini.c regalloc.c regalloc.h: Fix memory leak.
25765
25766 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25767
25768         * aot.c (mono_aot_get_method): register all used strings
25769
25770 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25771
25772         * mini.c: always intern strings references with ldstr at compile time.
25773
25774 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25775
25776         * Makefile.am: add BUILT_SOURCES.
25777
25778 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25779
25780         * driver.c: give a better error message when the assembly to execute
25781         doesn't have an entry point.
25782
25783 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25784
25785         * Makefile.am: added hack for automake
25786
25787         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25788         correct sematics.
25789
25790         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25791
25792 22003-04-07  Martin Baulig  <martin@ximian.com>
25793
25794         * Makefile.am: Added Makefile.am.
25795
25796         * debugger-main.c: Removed, this is now in the debugger where it
25797         belongs.
25798
25799         * mini.pc.in: Call this package `mini' for the moment.
25800
25801
25802
25803
25804
25805
25806
25807
25808
25809
25810
25811
25812
25813
25814