95cfb66c3c0efad48efe9300decc9c9f9748bb89
[mono.git] / mono / mini / ChangeLog
1 2010-07-08  Geoff Norton  <gnorton@novell.com>
2
3         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
4
5 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
6
7         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
8
9         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
10         is not defined in the LLVM case to keep the imt arg alive.
11
12 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
13
14         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
15         functions, now its 'llvm_<FOO>_trampoline'.
16
17         * method-to-ir.c (emit_imt_argument): Fix llvm support.
18
19         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
20         cannot be passed in the same call.
21
22         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
23         register to be the same as the RGCTX register, the two can't be used together on
24         the same call.
25
26 2010-07-05  Miguel de Icaza  <miguel@novell.com>
27
28         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
29         that allows the user to force the VM to use llvm or sgen.
30
31 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
32
33         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
34         before processing the exception on PPC too.
35
36         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
37
38         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
39         'this' is always passed as the first argument, before the vtype ret arg. This
40         simplifies get_this_arg_reg () and LLVM integration.
41
42 2010-07-05  Martin Baulig  <martin@ximian.com>
43
44         * exceptions-x86.c (mono_arch_handle_exception): Port this to
45         Windows; apply my patch from r159782 in the mono-2-6 branch.
46
47 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
48
49         * Makefile.am: Don't build the debug assembler files if we're building without
50         debugger support.
51
52 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
53
54         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
55
56 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
57
58         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
59         length.
60
61         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
62         regs [ARMREG_FP] instead.
63
64         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
65
66         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
67         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
68
69         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
70
71         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
72
73         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
74
75         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
76         without IMT_REG defined (ARM).
77
78         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
79         the trampolines.
80
81 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
82
83         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
84
85 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
86
87         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
88         definitions to match their declarations and vice-versa.
89
90 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
91
92         * Makefile.am (common_sources): Add mini-llvm.h.
93
94         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
95
96 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
97
98         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
99         compiling.
100
101 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
102
103         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
104         implemt the option of loading the llvm backend from a module so
105         that we can have a single binary and the bloat from llvm is
106         only experienced when it is actually loaded.
107
108 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
109
110         * mini-llvm.c: remove direct access to mono_defaults.
111
112 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
113
114         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
115         a no-op.
116
117         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
118
119         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
120         is now mono_arch_nullify_class_init_trampoline ().
121         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
122         opcodes, they are no longer needed.
123
124         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
125         now mono_arch_nullify_class_init_trampoline ().
126         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
127         opcodes, they are no longer needed.
128
129         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
130         vtable on platforms which support it.
131
132         * driver.c: Print the full LLVM version we are compiled against in --version.
133
134         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
135         a bit better. Decode nesting information to fix eh support for llvm+aot.
136
137         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
138         methods.
139
140         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
141
142         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
143         is always passed as the first argument, before the vtype ret arg. This simplifies
144         get_this_arg_reg () and LLVM integration.
145
146 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
147
148         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
149         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
150         most of the vcall specific code to mono_vcall_trampoline () from
151         common_call_trampoline ().
152
153 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
154
155         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
156         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
157         if the callsite is patched.
158
159         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
160         the llvm branch.
161
162         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
163         the trampoline in the xdebug info.
164
165         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
166         as well.
167
168 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
169
170         * mini-llvm.c: Fix a few problems exposed by make check.
171
172 2010-06-25  Mark Probst  <mark.probst@gmail.com>
173
174         * mini-trampolines.c (common_call_trampoline): An ugly hack to
175         work around a potentially very hard to fix problem with inflating
176         generic methods.
177
178 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
179
180         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
181         problem has been fixes.
182
183 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
184
185         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
186
187         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
188         It might be be better to define a MonoGCJitOptions structure later and have the
189         GC return that.
190
191         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
192
193         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
194
195         * debugger-agent.c (get_objref): Implement support for sgen.
196
197         * driver.c: Remove the unused gc_wrapper.h include.
198
199         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
200         implementation.
201
202 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
203
204         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
205
206         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
207         in MonoCompile.
208
209         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
210         instead.
211
212 2010-06-23  Miguel de Icaza  <miguel@novell.com>
213
214         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
215         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
216
217         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
218         it only for Boehm diagnostics.
219
220         * Makefile.am: Make the file a bit more consistent.
221
222         * debug-debugger.c: Wrap the entire file with an #ifdef
223         MONO_DEBUGGER_SUPPORTED to simplify the build.
224
225         * Makefile.am: Fix the opcodes build issue by including the
226         source, not by including the .lo file directly
227
228         Always bring the MDB sources into the build, to drop the
229         dependency on the AM_CONDITIONAL from configure.in as the hard
230         debugger supports Boehm, but not Sgen, this simplifies the build. 
231
232         * Renamed the *.s files into *.S
233
234 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
235
236         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
237         wb for now on 64bits systems while issues with valuetype returns
238         are not fixed.
239
240 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
241
242         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
243         passes by calling createStandardFunctionPasses ().
244
245 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
246
247         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
248
249 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
250
251         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
252         MONO_INST_FAULT.
253
254         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
255         allow better optimization if the OP_LDADDR which caused the flag to be set was
256         optimized away.
257
258         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
259
260         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
261         the type token.
262
263         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
264
265         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
266
267 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
268
269         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
270         to handle the code sequence generated for non-near calls. Fixes #616056.
271
272 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
273
274         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
275
276         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
277
278         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
279         nesting clause too.
280         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
281         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
282         trampoline which saves the context, so changes made to callee saved registers in
283         finally clauses are visible to a nesting catch clause.
284
285         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
286
287         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
288         in LLVM compiled code.
289         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
290         the finally handler has ran.
291
292         * mini.h (ResumeState): New structure containing information required to resume
293         exception handling after executing LLVM compiled finally clauses.
294
295         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
296         bit, by passing all the registers as one argument.
297
298 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
299
300         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
301         to avoid an assert.
302
303 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
304
305         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
306
307         * aot-compiler.c aot-runtime.c: Fix LLVM support.
308
309         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
310         pad, branch to a new bblock instead.
311
312         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
313         orig_method.
314
315         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
316
317         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
318
319 2010-06-17  Geoff Norton  <gnorton@novell.com>
320
321         * mini-arm.h:
322         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
323         can be used by sgen.
324
325 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
326
327         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
328
329         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
330         fails.
331
332         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
333         the ip done by throw_exception (), it is not needed for corlib exceptions.
334
335 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
336
337         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
338         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
339         of size > 5 words. This support fast barriers for value types up to
340         256/512 bytes which     beyond that the copying itself is the major issue.
341
342         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
343         for gsharing, so use it.
344
345         This eliminate all calls to mono_value_copy from managed code in
346         gmcs, fsharp and ipy.
347
348         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
349
350         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
351         performance kept
352
353         * mini.c (mini_init): Register new icall.
354
355 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
356
357         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
358         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
359
360 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
361
362         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
363         value types as the overhead is huge. Manually expand it up to 5 words to
364         avoid code bloat.
365
366         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
367         is an exception that performance is dominated by mono_value_copy.
368
369         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
370
371 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
372
373         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
374         trampolines on x86, since those have their own cconv.
375
376         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
377         exception trampolines.
378
379         * tramp-x86.c: Add xdebug info for a few trampolines.
380
381         * mini-llvm.c: Set the name of the arguments.
382
383         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
384         using a block address if using the LLVM mono branch.
385
386         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
387         trampolines.
388
389 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
392
393         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
394
395         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
396
397         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
398
399         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
400         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
401         to identify the vtable slot address plus the method which needs to be compiled.
402
403         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
404         using llvm.
405
406         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
407         'this' is always passed as the first argument, before the vtype ret arg. This
408         simplifies get_this_arg_reg () and LLVM integration.
409
410         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
411         the latest changes.
412
413         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
414         these trampolines.
415
416         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
417
418         * mini-llvm.c: Fix compilation with llvm 2.6.
419
420         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
421
422         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
423         defined.
424
425         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
426         is always passed as the first argument, before the vtype ret arg. This simplifies
427         get_this_arg_reg () and LLVM integration.
428
429 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
430
431         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
432
433         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
434         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
435         translate into much nicer code.
436
437 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
438
439         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
440         parameter index information. Use this to simplify a lot of code.
441
442         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
443
444 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
445
446         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
447         to fix infinite generic recursion. Fixes #612702.
448
449 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
450
451         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
452         imt trampoline per imt slot when using LLVM.
453
454 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
455
456         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
457
458 2010-06-09  Levi Bard  <levi@unity3d.com>
459
460         * debugger-agent.c: Clear unloaded types on appdomain unload.
461
462 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
463
464         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
465         Fixes #612206.
466
467         * exceptions.cs: Add a test.
468
469 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
470
471         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
472
473         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
474
475         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
476         so it doesn't have to do it.
477
478         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
479         process does not mix with ours.
480
481         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
482         ones.
483
484         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
485         loads/stores which can throw exceptions inside clauses.
486
487 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
488
489         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
490         one ENDFINALLY.
491
492         * mini.c (mini_init): Register mono_resume_unwind as an icall.
493
494 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
495
496         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
497
498         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
499         locals.
500
501 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
502
503         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
504         appdomain.
505
506 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
507
508         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
509         Use a separate generic class init trampoline for llvm, since it needs a different
510         signature.
511
512         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
513         includes the location of this/rgctx.
514
515         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
516         branch.
517
518 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
519
520         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
521
522         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
523         clause.
524
525 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
526
527         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
528         says so.
529
530         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
531
532         * aot-compiler.c (patch_to_string): New debugging helper function.
533
534 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
535
536         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
537         trampoline.
538
539         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
540
541         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
542
543         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
544
545         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
546         clauses.
547
548         * mini.c (create_jit_info): Print EH clause info for LLVM too.
549
550 2010-05-28  Mark Probst  <mark.probst@gmail.com>
551
552         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
553         cpobj with reference types.
554
555 2010-05-28  Mark Probst  <mark.probst@gmail.com>
556
557         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
558         write barrier for reference types.
559
560 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
561
562         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
563         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
564
565 2010-05-31  Martin Baulig  <martin@ximian.com>
566
567         Fix #608271.
568
569         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
570         clear_breakpoint() on all breakpoint events and remove them from the list.
571
572 2010-05-27  Martin Baulig  <martin@ximian.com>
573
574         Fix #605698.
575
576         * debugger-agent.c (method_commands, type_commands): Temporarily
577         set the appdomain while executing this method; do all metadata
578         calls in the debuggee's appdomain where user assemblies are loaded.
579
580 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
581
582         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
583
584 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
585
586         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
587
588 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
589
590         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
591         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
592         be referenced even after the header is freed.
593
594         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
595         section.
596
597 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
598
599 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
600
601         * genmdesc.c (main): Fixing the detection of the nacl switch.
602
603         Code is contributed under MIT/X11 license.
604
605 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
606
607         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
608
609         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
610
611         * mini.h (LLVM_CHECK_VERSION): New helper macro.
612
613 2010-05-25  Miguel de Icaza  <miguel@novell.com>
614
615         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
616         the Perl program
617
618         * genmdesc.c: Added support for nacl: key on the machine
619         description files to support the extra space required by Google
620         Native Client.
621
622 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
623
624         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
625
626 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
627
628         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
629         mono_runtime_class_init_full ().
630         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
631
632 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
633
634         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
635
636 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
637
638         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
639         two are not the same on ilp32.
640
641 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
642
643         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
644         added by mistake.
645
646         * mini-ppc.c: Fix the DISABLE_JIT build.
647
648 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
649
650         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
651         (make_writable): Remove this unused function.
652
653 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
654
655         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
656         structure. Make the labels to plt entries local symbols instead of assembler local
657         labels, since tha latter causes problems for the iphone linker.
658
659 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
660
661         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
662
663 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
664
665         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
666         (ppc_patch_full): Ditto.
667
668         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
669
670         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
671         if gshared is enabled, to avoid asserts in the trampoline code.
672
673         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
674         on ia64.
675
676 2010-05-15  Geoff Norton  <gnorton@novell.com>
677
678         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
679         xdebug mode.
680
681 2010-05-14  Geoff Norton  <gnorton@novell.com>
682
683         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
684         misaligned stack on darwin.
685
686 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
687
688         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
689         arm.
690
691 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
692
693         * xdebug.c: Fix ARM support.
694
695 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
696
697         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
698         and do most of the work on the normal stack.
699         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
700
701 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
702
703         * aot-compiler.c: Put non-code data into the .rodata section on linux.
704
705 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
706
707         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
708
709 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
710
711         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
712         and do most of the work on the normal stack.
713
714 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
715
716         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
717         and do most of the work on the normal stack even if sigaltstack is disabled.
718
719 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
720
721         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
722         UCONTEXT_REG_ constants are available on linux as well.
723         (mono_arch_monoctx_to_sigctx): Ditto.
724         (mono_arch_ip_from_context): Ditto.
725
726 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
727
728         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
729         other domains.
730
731 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
732
733         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
734         no longer needed.
735
736 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
737
738         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
739         if a breakpoint cannot be inserted.
740
741 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
742
743         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
744
745 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
746
747         * debugger-agent.c (frame_commands): Return an error instead of asserting if
748         no JIT info is found for the method.
749
750 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
751
752         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
753         in debug printf.
754
755 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
756
757         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
758         a list of arch specific trampolines.
759
760         * aot-compiler.c (emit_trampolines): Use it.
761
762 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
763
764         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
765         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
766         get rid of the _full from their name.
767
768 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
769
770         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
771         get_nullified_class_init_trampoline to remove some code duplication.
772
773 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
774
775         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
776         attach.
777
778 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
779
780         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
781
782         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
783
784         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
785         there is no need to jump through the first plt entry.
786
787         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
788
789         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
790         arch-specific function.
791         (mono_aot_get_plt_info_offset): Ditto.
792
793         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
794         mono_arch_init () to register jit icalls called from full-aot trampolines.
795         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
796         to mini-<ARCH>.c.
797
798         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
799         the specialized throw corlib exception trampoline, use a variant of the normal
800         trampoline along with a new C function which does the call to
801         mono_exception_from_token (), just like on x86.
802
803 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
804
805         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
806         Reorganize the full aot trampoline creation functions, instead of taking a bunch
807         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
808         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
809         creation functions on architectures which have the full-aot ones.
810
811 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
814
815 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
816
817         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
818         explicitly, this seems to be required by some gcc versions at -O2.
819
820         * mini-arm.c: Ditto.
821
822 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
825         has_target delegate invokes.
826
827 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
828
829         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
830         info fields.
831
832         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
833         add patches/unwind info arguments, move to mini.c.
834
835         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
836
837 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
838
839         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
840         command which returns full path names.
841
842 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
843
844         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
845         code_size output variable.
846
847         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
848         mono_get_lmf_addr.
849         
850 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
851
852         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
853         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
854         (mono_arch_cpu_enumerate_simd_versions): Ditto.
855
856 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
857
858         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
859         apple assembler.
860
861 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
862
863         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
864
865 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
866
867         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
868
869 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
870
871         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
872
873 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
874
875         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
876         line number support works with eglib.
877
878 2010-04-27  Miguel de Icaza  <miguel@novell.com>
879
880         * driver.c, mini.c: Since linking with LLVM makes the default Mono
881         dirty an extra 70kb pages on startup we are now going to choose a
882         different strategy: ship mono and mono-llvm binaries, with the
883         second being the one that links with LLVM and defaults to LLVM
884         being enabled.
885
886 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
887
888         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
889         Implement full-aot support on x86.
890
891         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
892         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
893         the first register returned by get_global_int_regs ().
894
895         * cpu-x86.md: Fix the length of insertx_u1_slow.
896
897         * iltests.il.in: Disable tail call tests when running with full-aot.
898
899 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
900
901         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
902
903 2010-04-24  Mark Probst  <mark.probst@gmail.com>
904
905         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
906         in the initializer, because it's non-constant.
907
908 2010-04-23  Miguel de Icaza  <miguel@novell.com>
909
910         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
911         of LLVM on by default.   Used for buildbots and other setups.
912
913 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
914
915         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
916
917 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
918
919         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
920         initonly static fields when using moving GC.
921
922         Contributed under MIT/X11 license.
923
924 2010-04-23  Geoff Norton  <gnorton@novell.com>
925
926         * mini-amd64.h: Darwin x86_64 support.
927
928 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
929
930         * exceptions-arm.c: Remove platform checks in favor of configure checks.
931
932 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
933
934         * exceptions-arm.c: Add Android support for sigcontext structure.
935
936 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
937
938         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
939         wrappers correctly now that their wrapper info is NULL.
940
941 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
942
943         * mini.c (mono_jit_compile_method_inner): Avoid calling
944         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
945
946 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
947
948         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
949         so the latter can be #ifndef DISABLE_JIT-ed.
950
951         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
952
953 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
954
955         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
956
957 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
958
959         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
960         stack.
961
962 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
963
964         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
965         calling mono_class_num_methods (). Fixes #592244.
966
967 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
968
969         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
970
971         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
972
973 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
974
975         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
976         version.
977         * (handle_alloc): Ditto.
978         (mono_method_to_ir): Remove the constrained call restriction added by a previous
979         change, its not needed anymore.
980
981 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
982
983         * mini-posix.c (sigusr1_signal_handler): Fix build on
984         non x86/amd64 systems.
985
986 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
987
988         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
989         calls where the constrained class needs a context. Fixes #595863.
990
991         * iltests.il.in: Add a test.
992
993 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
994
995         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
996         2.6/SVN seems to have broken support for them.
997
998 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
999
1000         * mini-llvm.c: Fix support for LLVM 2.6.
1001
1002 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1005         MonoInternalThread belonging to the thread.
1006
1007 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1008
1009         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1010         unsafe optimization that will remove bound checks.
1011
1012 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1013
1014         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1015         CompareExchange not to be inlined for I8.
1016
1017         Contributed under MIT/X11 license.
1018
1019 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * array.cs: Add tests for cast between primitive array types.
1022
1023 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1024
1025         * Makefile.am: create a convenience library for moon to link with
1026
1027 2010-04-07 Paolo Molaro <lupus@ximian.com>
1028
1029         * method-to-ir.c: optimize array accesses from generic interfaces.
1030
1031 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1034
1035 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1036
1037         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1038         of marshalbyref classes.
1039
1040         Fixes #515884.
1041
1042 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1045         information.
1046
1047         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1048         information.
1049
1050         * mini.h: Increase AOT version.
1051
1052 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1053
1054         * mini-x86.h: Only enable soft debugger when using sigaction or on
1055         Windows. Fixes build on Haiku (lacks siginfo_t).
1056
1057         Code is contributed under MIT/X11 license.
1058
1059 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1060
1061         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1062         BeOS-style signal handlers.
1063
1064         Code is contributed under MIT/X11 license.
1065         
1066 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1069
1070 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         * mini-exceptions.c: Fix win32 build.
1073
1074 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1075
1076         * mini.c, driver.c: Call mono_gc_base_init() before
1077         mono_debug_init().
1078
1079 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1080
1081         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1082         call_method]): Delegate the actual work in security-core-clr.c
1083         to ease code sharing.
1084
1085 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1088         float conv.ovf.un opcodes are encountered, instead of asserting later.
1089         Fixes #566296.
1090
1091 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1094
1095         * iltests.il.in: Add a test.
1096
1097 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1098
1099         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1100         large. Fixes #567040.
1101
1102         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1103
1104 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1107         #592711.
1108
1109 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1110
1111         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1112         mono_create_handler_block_trampoline with the proper #ifdef so that it
1113         compiles on amd64.
1114
1115 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1116
1117         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1118         allows to select if it's new or old context that is passed to 
1119         the callback.
1120
1121         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1122         case when executing a guarded handler from the EH machinery.
1123
1124         * mini-exceptions.c (mono_install_handler_block_guard): New function
1125         responsible for checking for handler blocks, installing the guard and
1126         clearing abort state.
1127
1128         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1129         to check for handler blocks and skip interruption logic if one was found.
1130
1131         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1132         by the handler block guard trampoline. Resumes interruption by raising the
1133         pending ThreadAbortException.
1134
1135         * mini.c (create_jit_info): Calculate the end address of a finally block.
1136
1137         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1138         of a finally block to a specified address and return the old one.
1139
1140         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1141         trampoline patches the original return address and calls the trampoline function.
1142
1143 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1146
1147         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1148         does the patching if the callee is in the same domain.
1149
1150         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1151         of mono_arch_patch_plt_entry ().
1152
1153 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1154
1155         * mini.c (create_jit_info): Fix try block hole length encoding.
1156
1157 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1158
1159         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1160         duplicate information and print offsets instead of absolute addresses.
1161
1162 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1165         event is sent. Fixes #591733.
1166
1167 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1170         OpenBSD.
1171
1172 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1175         thread_to_tls hash table.
1176
1177         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1178         section. Fixes #591000.
1179
1180 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1181
1182         * Makefile.am (version.h): Check for pure .git directory only,
1183         fixes SVN revision when using git without git-svn.
1184
1185         Contributed under MIT/X11 license.
1186
1187 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1190
1191 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * basic-simd.cs: Test for vector x scalar binary operators.
1194
1195 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1198         intrinsics with expanded scalar arguments.
1199
1200 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1203         don't have an exception class, so don't decode it. This would crash
1204         with filter clauses.
1205
1206 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1207
1208         Make sure that trunk builds with DISABLE_JIT, an update to the
1209         PlayStation 3 port.
1210         
1211         * mini.c (mini_get_shared_method): this code seems to be necessary
1212         regardless of whether DISABLE_JIT has been defined.
1213
1214         (mono_jit_compile_method_inner): it seems that this method is
1215         required even in full AOT mode, so ifdef out only the pieces that
1216         try to genrate code (the body of code that applies patches to the
1217         code).  
1218
1219         (mini_method_compile): do not compile when using DISABLE_JIT.
1220
1221         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1222         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1223         compile when DISABLE_JIT is set.
1224
1225 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1226
1227         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1228         arch really supports it.
1229
1230 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1231
1232         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1233
1234 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1235
1236         * exceptions-s390x.c: Add support for
1237         mono_arch_get_throw_corlib_exception and fix throw by name.
1238
1239         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1240         logic (especially for varargs); Correct localloc sizing; Add
1241         mono_arch_get_this_arg_from_call and
1242         mono_arch_get_this_arg_from_call.
1243
1244         * mini-s390x.h: Add support for facility list extraction;
1245         Correct/update MONO_ARCH_xxx settings.
1246
1247         * mini-s390.c: Minor corrections to instruction output for
1248         varargs. No IMT implementation - I think it's time to deprecate
1249         s390 and just leave s390x.
1250
1251         * tramp-s390x.c: Correct creation of trampoline instruction
1252
1253
1254         * cpu-s390x.md: Update some instruction lengths
1255
1256 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1259         can be hit with partial sharing.
1260
1261         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1262         in non-shared classes correctly.
1263         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1264         Turn on partial sharing.
1265
1266 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1269         by mistake.
1270
1271 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1272
1273         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1274         mono_method_signature ().
1275
1276         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1277
1278         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1279         error checking, so later calls do not need error checking.
1280
1281 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1284
1285         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1286
1287 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1288
1289         * mini-exceptions.c (mono_handle_exception_internal): Don't
1290         check try_end for archs different than s390. 
1291
1292         * mini.c (create_jit_info): Don't crash if the finallt block is the
1293         last one.
1294
1295 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1296
1297         * driver.c (mono_main): Don't free global codeman under linux since
1298         glic now peeks at code on stack for more archs than just amd64.
1299
1300 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1301
1302         * mini.c, method-to-ir.c: changes to support compressed interface
1303         bitmaps.
1304
1305 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1306
1307         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1308         Use sigaction on OpenBSD too.
1309
1310 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1313
1314 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1315
1316         * debugger-agent.c: #include sys/select.h for fd_set.
1317
1318         Code is contributed under MIT/X11 license.
1319
1320 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1323         (openbsd+amd64 ?).
1324
1325 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1328         some large methods with lots of exception handlers. Fixes #440924.
1329
1330 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1331
1332         * method-to-ir.c: remove code duplication for interface checks.
1333
1334 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1337         (assembly_unload): Clear all event requests referencing the to-be unloaded
1338         assembly.
1339
1340
1341 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1342
1343         * mini.h, mini-exceptions.c: restore the state of the stack
1344         guard page permissions.
1345
1346 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1347
1348         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1349         call site patching code, it doesn't appear to be needed.
1350
1351 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1354         sharing generic methods whose type arguments are a mix of reference and
1355         non-reference types. Not yet turned on.
1356
1357         * mini.c (mini_get_shared_method): New helper function to return
1358         the method which will be compiled/registered in the JIT tables when doing
1359         generic sharing.
1360         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1361         use mini_get_shared_method ().
1362
1363         * mini.c (mini_method_compile): Register the same method which is compiled when
1364         doing generic sharing.
1365
1366         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1367
1368         * generics.cs: Add partial sharing tests.
1369
1370 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1371
1372         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1373                    Add an enum value that or's all possable values together. Add an enum value
1374                    that marks the end of the used bit indexes.
1375
1376         * mini-amd64.c : Make changes to match the changes in mini.h 
1377
1378         * mini-x86.c : Make changes to match the changes in mini.h
1379
1380         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1381                    simd_version to support more simd versions. Changed the name of
1382                    simd_version to simd_version_flags to make it more intuitive that
1383                    it now contains bit flags. Reordered the *_intrinsics arrays to
1384                    match the changes above. Changed emit_intrinsics() to use the new
1385                    setup mentioned above.
1386
1387         Code is contributed under MIT/X11 license.
1388
1389 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1390
1391         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1392         remaining archs. Alpha and hppa maintainers, please stand up.
1393
1394 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1395
1396         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1397         is needed even when fail_tramp!=NULL.
1398
1399 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1400
1401         * debugger-agent.c (insert_breakpoint): Write a log message.
1402
1403 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1404
1405         * iltests.il.in: Add a few tests for LEAVE going over multiple
1406         finally clauses.
1407
1408 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1409
1410          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1411
1412 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1413
1414         * mini.h (MonoBasicBlock): Add native_length field.
1415         * mini.h (MonoCompile): Add try_block_holes field.
1416         * mini.h (MonoInst): Add exception_clause pointer to
1417         the data union.
1418
1419         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1420         * mini.c (mono_cfg_add_try_hole): New function to register possible
1421         holes in try blocks.
1422         * mini.c (create_jit_info): Fill in the holes information.
1423
1424         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1425         by a try block.
1426
1427         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1428
1429 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1430
1431         * jit-icalls.c: adjusted for the array API changes.
1432
1433 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1436
1437 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1440         the 'pending' flag. This fixes support for appdomains too.
1441
1442
1443 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1444
1445         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1446
1447 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1450         when using LLVM, LLVM generates it itself when needed.
1451
1452         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1453
1454         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1455         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1456         OP_ANDNPS/OP_ANDNPD.
1457
1458 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1461         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1462         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1463
1464 2010-03-11  Martin Baulig  <martin@ximian.com>
1465
1466         * debugger-agent.c (type_commands): Add NULL check to
1467         `CMD_TYPE_GET_SOURCE_FILES'.
1468
1469 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1470
1471         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1472
1473 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1476         #586664.
1477
1478         * iltests.il.in: Add a test.
1479
1480 2010-03-05  Martin Baulig  <martin@ximian.com>
1481
1482         Add support for aborting invocations.
1483
1484         * debugger-agent.c
1485         (InvokeData): Added `InvokeData *last_invoke'.
1486         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1487         added a new `invoke' field to keep the `InvokeData *' throughout
1488         the invocation.
1489         (ErrorCode): Added `ERR_NO_INVOCATION'.
1490         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1491         (mono_debugger_agent_handle_exception): Don't report any exception
1492         if an abort was requested.
1493         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1494         a thread abort if necessary.
1495         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1496
1497 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1498
1499         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1500         so we can release the whole list and not just the first one. Free
1501         it in more places as well.
1502
1503 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1504
1505         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1506
1507 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1508
1509         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1510
1511 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1512
1513         * driver.c: report also other misc build options.
1514
1515 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1516
1517         * method-to-ir.c: Generate better code for the NewObject
1518         intrinsic.
1519         
1520 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1523         is disabled. Fixes #582322.
1524
1525         * iltests.il.in: Add a test.
1526
1527 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1530         the handling of obj->synchronization == null and owner != current thread to
1531         mono_monitor_exit ().
1532
1533         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1534
1535
1536 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1537
1538         * mini.c: change the way emulated opcode info is stored and save about
1539         4 KB of runtime memory.
1540
1541 2010-03-04  David S. Miller  <davem@davemloft.net>
1542
1543        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1544        that don't provide the siginfo in the second signal handler argument
1545        are buggy, and this has been fixed for years.
1546        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1547        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1548
1549 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * aot-runtime.c (find_symbol): Fix a leak.
1552         (decode_patch): Ditto.
1553
1554 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1557
1558 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1561
1562 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1563
1564         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1565
1566 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1567
1568         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1569         to check for errors, it's enough to create the metadata open.
1570
1571         Fixes #562150
1572
1573 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1574
1575         * trace.c|h:
1576         * mini-exceptions.c: Add support for printing stack traces when handling
1577         exceptions, and when printing exceptions thrown while tracing also print
1578         the exception message.
1579
1580 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1581
1582         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1583         since the exclude token is a valid string character.
1584
1585 2010-03-02  Levi Bard  <levi@unity3d.com>
1586
1587         * debugger-agent.c: Invalidate thread stacks on domain unload.
1588
1589 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1590
1591         * method-to-ir.c: Emit dummy_use for stored reference after write
1592         barriers to make sure the object is pinned if the GC interrupts
1593         before the write barrier is done.
1594
1595 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1598
1599 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * debugger-agent.c: Add a log message printing the protocol version.
1602
1603 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * debugger-agent.c: Add a new command to communicate the protocol version used
1606         by the client. This could be used to allow newer runtimes to communicate with
1607         older clients.
1608
1609 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1612
1613 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1616         type.
1617
1618 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1619
1620         * mini-arm.c: make the arm cpu arch configurable with the
1621         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1622         Bug #584198.
1623
1624 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1625
1626         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1627         support for the perf tool on Linux.
1628
1629 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1630
1631         * method-to-ir.c: make string.InsertenalSetChar() specialization
1632         effective.
1633
1634 2010-03-01  Robert Jordan  <robertj@gmx.net>
1635
1636         * Makefile.am: fix the non-static build.
1637
1638 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1641         here.
1642
1643 2010-02-26  Robert Jordan  <robertj@gmx.net>
1644
1645         * tasklets.c (continuation_store): Return from an error condition
1646         immediately.
1647
1648 2010-02-26  Martin Baulig  <martin@ximian.com>
1649
1650         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1651
1652         * debug-mini.c
1653         (MonoDebuggerThreadInfo): Added `internal_flags'.
1654         (MonoDebuggerInternalThreadFlags): New enum.
1655         (_mono_debugger_throw_exception): Don't signal the debugger if a
1656         type abort was requested.
1657         (_mono_debugger_unhandled_exception): Likewise.
1658         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1659         (mono_debugger_runtime_invoke): If the debugger requested a thread
1660         abort during the invocation, reset it here.
1661
1662 2010-02-26  Martin Baulig  <martin@ximian.com>
1663
1664         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1665         instead of `MonoThread *'.
1666
1667 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1670         code offsets table, as it is mostly sorted.
1671
1672 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1675         Fixes #582991.
1676
1677 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1680
1681 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1682
1683         * Makefile.am: build the new ABI version of the libmono library.
1684         * debugger-agent.c, mini.c: fix warnings with the new API.
1685         * jit.h: don't depend on glib.h being included.
1686
1687 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1690
1691 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1694         ThreadStatic variables.
1695
1696 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1699         data is not freed yet. Fixes #582460.
1700
1701 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1704         event requests. Bump protocol minor version.
1705
1706 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1709
1710 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1713         #581950.
1714
1715         * iltests.il.in: Add a test.
1716
1717 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1718
1719         * mini.c (inline_method): Check for loader errors.
1720
1721 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1722
1723         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1724         instead of mono_method_get_header as it doesn't decode locals
1725         so the called method can have unresolved dependencies that will only
1726         be satisfied after the current method is JIT'd.
1727
1728         Fixes #550968.
1729
1730 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * basic.cs (test_0_div_opt): Speed this up a bit.
1733
1734 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1737
1738         * mini.c (mono_jit_create_remoting_trampoline): Call
1739         mono_create_specific_trampoline () instead of
1740         mono_arch_create_specific_trampoline ().
1741
1742         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1743
1744 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1747         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1748
1749         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1750
1751         * mini-amd64.c: Fix DISABLE_JIT support.
1752
1753 2010-02-20  Geoff Norton  <gnorton@novell.com>
1754
1755         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1756
1757 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1760         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1761         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1762         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1763         handle_exception.
1764
1765 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1768         edx/ecx too. This is needed to support OP_SEQ_POINT.
1769
1770 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1771
1772         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1773
1774         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1775
1776 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1777
1778         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1779         LLVM+AOT+exceptions, not enabled yet.
1780
1781 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1784
1785 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1786
1787         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1788         xdebug info for these.
1789
1790         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1791         in a few places.
1792
1793         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1794         not used yet.
1795
1796 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1799
1800 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1803         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1804
1805         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1806         for mtouch.
1807
1808 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1809
1810         * debugger-agent.c: handle incomplete reads and EINTR in
1811         recv()/send(). This could have been causing random
1812         disconnections.
1813
1814 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1817         points.
1818
1819         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1820         so they have small offsets. Fixes #566311.
1821
1822 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1823
1824         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1825
1826 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * mini-amd64.c: Remove the special casing of byref in a few places now that
1829         mini_type_get_underlying_type () handles it.
1830
1831         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1832         by returning native int. Fixes #577984.
1833
1834 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1837         a macro.
1838
1839         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1840         of putting the clause itself.
1841
1842         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1843
1844 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1847         might be unaligned.
1848
1849 2010-02-10  Geoff Norton  <gnorton@novell.com>
1850
1851         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1852
1853 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1856         llvm methods too.
1857
1858         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1859         it is not an LLVM generated symbol.
1860
1861         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1862
1863         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1864         implementation in gshared mode because it causes regressions.
1865
1866         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1867
1868         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1869         should be done by the caller.
1870
1871         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1872
1873         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1874
1875         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1876         since mono_jit_info_table_find () doesn't do it anymore.
1877
1878         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1879         instead of mono_jit_info_table_find ().
1880
1881 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1884
1885         * aot-compiler.c (encode_method_ref): Update after the removal of
1886         mono_gc_get_managed_allocator_type ().
1887
1888         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1889         Fixes #564538.
1890
1891 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1894         generic params as well.
1895         (handle_isinst): Ditto.
1896
1897         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1898         instead of always calling an icall.
1899
1900         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1901         computing the size of the got.
1902
1903         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1904         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1905         the assembly directive '.set' so it points to the first LLVM emitted method.
1906
1907 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         * mini.c (mini_method_verify): Report the method which failed to verify.
1910
1911 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1914         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1915         runtime MS verifier.
1916
1917 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1920         #561962.
1921
1922 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * mini-llvm.c: Init the jit module only when first JITting.
1925
1926         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1927
1928         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1929
1930         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1931         replaced with the real got.
1932
1933         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1934
1935         * image-writer.c: Reduce the amount of #ifdefs a bit.
1936
1937         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1938         llvm on darwin/arm.
1939
1940         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1941
1942         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1943         global.
1944
1945 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1946
1947         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1948         (mono_llvm_emit_method): Fix unaligned stores too.
1949
1950         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1951         so async stack walks don't crash.
1952
1953 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1956         was not patched if the callee needed an rgctx trampoline.
1957
1958 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1961         vtable address in AOT code.
1962
1963 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1964
1965         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1966         MonoInst's.
1967
1968 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1969
1970         * genmdesc.pl: remove dependency on external cpp.
1971
1972 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1973
1974         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1975         using LLVM, its not needed, and abcrem can't handle it.
1976
1977 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1978
1979         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1980         it easier to group instructions and reduce duplication.
1981
1982 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1983
1984         * decompose.c: Move the array/soft float decompose routines here from
1985         method-to-ir.c.
1986
1987         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1988
1989 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1992         to tell LLVM that the got is constant, not used yet.
1993
1994         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1995
1996 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1999         managed wrappers.
2000
2001 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * aot-compiler.c (add_wrappers): Commit the hack which generates
2004         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2005         custom attribute.
2006
2007 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2010         a fault, only used by the LLVM backend.
2011
2012         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2013         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2014
2015         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2016         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2017
2018         * mini-llvm.c: Only generate volatile loads from load instructions which have
2019         the MONO_INST_FAULT flag set.
2020
2021 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2024         64 bit platforms.
2025
2026 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2027
2028         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2029         sequence points. Fixes #571236.
2030
2031 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2034         end of the appdomain unload process, after assemblies have been unloaded.
2035         Fixes #574842.
2036
2037 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2040         works.
2041
2042         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2043         Fixes #573988.
2044
2045 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2048
2049 2010-01-26  Geoff Norton  <gnorton@novell.com>
2050
2051         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2052         with struct marshalability.
2053
2054 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2057         it supports class names as well.
2058
2059         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2060         needed by the GC map code.
2061
2062         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2063         flags if needed.
2064
2065         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2066         if cfg->init_ref_vars is set.
2067
2068         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2069         cfg->disable_initlocals_op_refs is set.
2070
2071         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2072         using liveness info if cfg->compute_precise_live_ranges is set.
2073
2074         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2075         volatile variables correctly. Add comments about the live ranges. Not enabled
2076         yet.
2077
2078 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2081         0x2a into them in method prologs.
2082
2083         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2084
2085 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2088         classes, since llvm is compiled with -fno-rtti.
2089
2090         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2091
2092         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2093         llvm does not require it.
2094
2095         * aot-runtime.c (load_method): Print the full name of the last aot method.
2096
2097 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2100         thread has not fully started yet.
2101
2102 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2105
2106 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2107
2108         * driver.c: Do not abort if LLVM is not supported, print a
2109         warning and add the information to the Mono JIT information.
2110
2111 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2114         using explicit null checks.
2115
2116 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2119         related code.
2120
2121         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2122         () in one place.
2123         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2124         its no longer needed.
2125
2126         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2127
2128         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2129         define for platforms still using it (s390). Get rid of the
2130         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2131
2132         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2133         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2134
2135         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2136         the caller pushed the arguments.
2137
2138         * mini-llvm.c: Enable throwing exceptions on x86.
2139
2140         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2141         "Thread (nil) may have been prematurely finalized" messages if this is called
2142         on a thread not registered with the runtime.
2143
2144         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2145
2146 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * jit-icalls.c (mono_array_new_3): New jit icall.
2149
2150         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2151
2152         * arrays.cs: Add a test for 3 dimensional arrays.
2153
2154 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2157         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2158         used.
2159
2160         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2161         thrown on x86.
2162
2163         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2164
2165         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2166
2167         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2168
2169 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2170
2171         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2172           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2173
2174         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2175
2176         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2177
2178         Code is contributed under MIT/X11 license.
2179
2180 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2183
2184         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2185
2186         * mini.c (mini_method_compile): Set the new flag when running under the
2187         debugger.
2188
2189 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2192         a ref/noref value + a global pin flag, so parts of stack frames can still be
2193         precisely marked even if they include stuff which needs pinning. Improve logging.
2194         Fix many bugs. Not enabled yet.
2195
2196         * gc-test.cs: Add a few tests.
2197
2198         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2199         the normal -v options. Avoid propagating liveness information through bblocks
2200         which end with a NOT_REACHED opcode.
2201
2202         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2203         after cfg has been freed.
2204
2205 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2208         if a clause is skipped because it uses the exception object, since it could
2209         have caught the exception.
2210
2211         * exceptions.cs: Add a test.
2212
2213 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2214
2215        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2216
2217         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2218         ICollection<T> wrappers.
2219
2220 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2223
2224 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2227         NOMAP32BIT or optimize_for_xen is set.
2228
2229 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2230
2231         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2232         mono_metadata_str_hash () instead.
2233
2234 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2235
2236         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2237         sizeof (void*).
2238
2239         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2240
2241 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2244         flag is set.
2245
2246         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2247         throwing code correctly.
2248
2249         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2250
2251 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2254         ftnptrs created by us, handle RGCTX_FETCH correctly.
2255         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2256
2257         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2258         ftnptr added by mono_aot_get_named_code ().
2259
2260 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2261
2262         * mini-arm.c: Fix a few LLVM problems.
2263
2264         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2265
2266 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2267
2268         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2269         AOT compiling.
2270
2271 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2272
2273         * jit.h, method-to-ir.c: added ability to set the policy for
2274         inserting breakpoints from the break IL instruction or the
2275         Debugger.Break () API call.
2276
2277 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2280         assemblies need to be eagerly loaded.
2281
2282 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2285
2286 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2289         an argument which matches any exception.
2290
2291 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2294         optimization if the called method is gshared and marshalbyref, since gshared
2295         methods can' have wrappers. Fixes #569390.
2296
2297         * generics.cs: Add a test.
2298
2299 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2302         callable from gdb.
2303
2304 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2307
2308 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2309
2310         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2311         since it is not supported in win2000.
2312
2313 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2314
2315         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2316         error if loading an assembly fails.
2317         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2318
2319         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2320         if exists.
2321
2322         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2323         compiled methods.
2324
2325         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2326
2327         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2328         is not supported yet.
2329
2330         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2331
2332 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2333
2334         * method-to-ir.c: All types with variant arguments must fallback to the
2335         slow path. This makes cast of variant delegates work.
2336
2337         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2338         argument that is set to TRUE is the returned vtable slot is for a variant
2339         interface. Changed a g_print + g_assert_not_reached to a g_error.
2340
2341         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2342         a similar fashion of generic virtual methods.
2343
2344 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2345
2346         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2347         when cfg is null.
2348
2349         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2350         method using a variance aware function.
2351
2352         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2353
2354 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2355
2356         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2357         do an icall for now.
2358
2359 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2362         If LLVM decides to set the code model to Large, reset it to Default.
2363
2364 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2367         stripped binaries as well.
2368
2369 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2372         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2373
2374         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2375         reg.
2376
2377 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2380         separate function.
2381
2382         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2383         as the type info to llvm.eh.selector.
2384         (exception_cb): Use the type info for filling out some fields of
2385         MonoJitExceptionInfo like the flags and the exception class. This is needed
2386         because the LLVM produced exception handling clauses might not match the original
2387         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2388
2389         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2390         separate function. Add an extra argument which returns the type infos
2391         corresponding to the exception clauses.
2392
2393         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2394         exception handling clauses.
2395
2396 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2397
2398         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2399         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2400         to fix an AOT case.
2401
2402 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2403
2404         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2405         internal assembly.
2406
2407 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2410         llvm code.
2411
2412 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2413
2414         * mini.c (mini_method_compile): Verify the method before calling
2415         mono_compile_create_vars as this might crash since it uses method
2416         information.
2417
2418         Fixes #560196.
2419
2420 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2423         one case if AOTing, since the class might not be a concrete class.
2424
2425 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2428         functions which are now defined in mempool-internals.h.
2429
2430         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2431
2432         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2433
2434 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2435
2436         * mini.c:
2437         * method-to.ir.c:
2438         * mini-*.c: Properly handle generic enums.
2439
2440         Fixes #566294
2441
2442 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2445         in a few more places.
2446
2447 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2450         nullable parameters. Fixes #567351.
2451
2452 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2453
2454         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2455
2456 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2459         mono_get_generic_context_from_code () call.
2460
2461         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2462
2463 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2466         needed.
2467
2468 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2469
2470         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2471         mono_method_get_signature returns NULL. Fix #567084
2472
2473 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2476         instead of once for each module.
2477
2478 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * debugger-agent.c (ss_start): Implement step over for the last sequence
2481         point in methods.
2482
2483         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2484         have the STEP_LOC flag set.
2485
2486         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2487         fails. Fixes #566689.
2488
2489 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * mini.c (mono_add_seq_point): New helper function.
2492         (mono_save_seq_point_info): New function to save sequence point info, extracted
2493         from mini_method_compile ().
2494
2495         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2496
2497         * mini.h (MonoSeqPointInfo): New structure containing information about
2498         the sequence points of a JITted method.
2499         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2500         'bucket' field.
2501
2502         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2503         point information is stored, use a MonoSeqPointInfo structure instead of a
2504         GPtrArray. For each seq point, compute a list of successor seq points.
2505
2506         * debugger-agent.c: Use the successor list to implement step-over more
2507         efficiently: instead of single stepping until a different line/IL offset is
2508         reached, place breakpoints into all successor seq points.
2509
2510         * mini.h: Bump AOT file format version.
2511
2512 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2515
2516         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2517
2518 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2521         build.
2522
2523 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2526         alloca as g_malloc is not signal safe.
2527
2528 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2531         VALGRIND_DISCARD_TRANSLATIONS.
2532
2533         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2534         checks, they are no longer needed.
2535
2536         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2537         a function into a sigctx which can handle function pointers.
2538
2539         * mini-ppc.c: Implement soft debugger support on ppc64.
2540
2541         * mini-ppc.c: Implement soft debugger support.
2542
2543 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2546
2547 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2548
2549         * mini.c (mono_get_runtime_build_info): include Mono version in
2550         the returned value.
2551
2552         * driver.c (mono_main): VERSION is now included in the string
2553         returned from mono_get_runtime_build_info()
2554
2555 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2558         signatures. Fixes #565143.
2559
2560         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2561
2562 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2563
2564         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2565
2566 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2567
2568         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2569         making max stack 10x smaller.
2570
2571 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2572
2573         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2574
2575 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2576
2577         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2578
2579 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2580
2581         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2582         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2583
2584         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2585
2586         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2587
2588         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2589
2590         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2591         the compilation.
2592
2593 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2594
2595         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2596         raise an invalid program exception.   
2597
2598         For other opcodes that we might not handle use a g_warning and
2599         raise the exception.   Beats termination.
2600
2601         Fixes #561724
2602
2603 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2606
2607         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2608         by merging the LLVM and !MAP_32BIT cases.
2609
2610 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2611
2612         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2613         sigctx being passed in, as we have no CONTEXT available in the APC.
2614
2615         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2616         for now.
2617
2618         Code contributed under MIT/X11 license.
2619
2620 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2623         in the LLVM backend on AMD64.
2624
2625         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2626         FDE.
2627
2628         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2629
2630         * mini-llvm.c: Export mono_personality for AOT.
2631
2632         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2633
2634         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2635         implicit exception can occur.
2636
2637         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2638         OP_IMPLICIT_EXCEPTION instruction.
2639
2640         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2641
2642         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2643
2644         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2645         inside a protected block.
2646
2647         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2648         trampolines doesn't include the argument.
2649
2650         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2651         trampolines on amd64.
2652
2653         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2654         of RDI.
2655
2656         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2657         disabled for methods with clauses.
2658
2659         * mini-llvm.c: Enable support for catch clauses.
2660
2661         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2662         end of an LLVM compiled finally clause.
2663         (mono_handle_exception_internal): Save the exception handling state in TLS
2664         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2665         resume unwinding from that point.
2666
2667         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2668         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2669         to obtain the addresses of the exception handling regions.
2670
2671         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2672         finally clauses are supported.
2673
2674         * mini.c (mini_method_compile): Add support for LLVM code with exception
2675         handlers.
2676
2677 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2678
2679         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2680         proper size.
2681
2682 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2683
2684         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2685         as a primitive type.
2686
2687 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2690         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2691         #564000.
2692
2693 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2694
2695         * method-to-ir.c (mini_redirect_call): do not redirect the
2696         InternalAllocateStr internal call if string profiling is enabled.
2697
2698 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2701         generic methods.
2702
2703         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2704         unwind.h header file.
2705
2706         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2707         newer valgrind versions seems to handle this fine.
2708
2709 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2712         on the debugger thread.
2713
2714 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2715
2716         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2717
2718         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2719
2720         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2721
2722         * cpu-<ARCH>.md: Make call_handler clob:c.
2723
2724         * mini.c: Reenable SSA for methods with clauses.
2725
2726         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2727         as it causes failures on x86.
2728
2729 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2730
2731         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2732         returns NULL (e.g. a bad assembly).
2733
2734 2009-12-08  Geoff Norton  <gnorton@novell.com>
2735
2736         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2737         stepping out into native code.  There were issues with nested invokes
2738         like .cctors.
2739
2740 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * mini.c (mini_method_compile): Do the disable_llvm checks early
2743         and avoid the LLVM compile pass if the checks fail.
2744
2745         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2746
2747         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2748         LLVM optimizations don't try to remove them.
2749
2750         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2751         different file so the original remains.
2752
2753 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2756
2757         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2758
2759         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2760         support for non-inline unwind descriptors.
2761
2762 2009-12-07  Geoff Norton  <gnorton@novell.com>
2763
2764         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2765         the interrupt_count slightly differently.  Native threads were never
2766         marked as resumed.
2767
2768 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2769
2770         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2771         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2772         yet generate this info.
2773
2774         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2775
2776         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2777         client can distinguish between intptrs and longs.
2778
2779 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2780
2781         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2782         blob.
2783
2784         * aot-runtime.c (load_function): Update after the change above.
2785
2786         * mini.h: Bump AOT file format version.
2787
2788         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2789         if the delegate class is dynamic.
2790
2791         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2792         in gshared code too using the new rgctx info type
2793         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2794
2795 2009-12-04  Geoff Norton  <gnorton@novell.com>
2796
2797         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2798         we need to track the original suspend count so the thread properly
2799         wakes up in resume_thread.
2800
2801 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2804         code.
2805
2806         * generics.cs: Add a test.
2807
2808         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2809         is 0. Simplify a lot of code using this.
2810
2811         * mini-trampolines.c (mono_delegate_trampoline): Call
2812         mono_create_static_rgctx_trampoline () before saving the final address in
2813         delegate->method_code, to avoid calling it each time a delegate is first called.
2814
2815         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2816         which need static rgctx trampolines.
2817
2818         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2819         keyed on the method+addr pair, since addr could be either the method addr or
2820         an unbox trampoline in the AOT case. Fixes #560246.
2821
2822 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2825         place it was called before too.
2826
2827 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2830         if no security manager is present, to speed up the AOT case. Call
2831         mono_class_vtable () full with raise_on_error == TRUE instead.
2832
2833 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2834
2835         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2836         the local optimization passes can take its result into account. Fixes
2837         #559876.
2838
2839         * exceptions.cs: Add a test.
2840
2841 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2842
2843         This patch is contributed under the terms of the MIT/X11 license
2844
2845         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2846
2847 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2848
2849         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2850
2851         * debugger-agent.c: Rework the handling of stack traces of running threads to
2852         avoid crashes if compute_frames () tries to walk the stack of running thread.
2853
2854         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2855
2856         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2857
2858         * mini.h (StackFrameInfo): Add an 'lmf' field.
2859
2860 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * debugger-agent.c (suspend_current): Always set really_suspended.
2863
2864         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2865
2866         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2867
2868 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2871         really suspended.
2872
2873 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2874
2875         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2876
2877 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * mini-trampolines.c: Fix MSVC build.
2880
2881 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2884
2885 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2888         the instruction following an OP_FCOMPARE is optimized away.
2889
2890 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2891
2892         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2893         emit_autoreg () into this arch-specific function.
2894
2895         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2896         code, it is no longer needed.
2897
2898         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2899
2900         * mini.h: Bump AOT file format version.
2901
2902         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2903         using the sorted_code_offsets array, instead of reading it from the
2904         exception debug info.
2905         (load_method): Call mono_aot_find_jit_info instead of
2906         decode_exception_debug_info ().
2907
2908         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2909         LLVM compiled as a flag.
2910
2911 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * debugger-agent.c (resume_thread): Fix a warning.
2914
2915         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2916         generated.
2917
2918 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2921         contents to MonoAotFileInfo.
2922
2923 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2926         Put all binary data into a giant blob, similarly to the way .net assemblies
2927         store binary data. Emit offset tables in a compact form to reduce their size.
2928
2929         * mini.h: Bump AOT file format version.
2930
2931         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2932         places.
2933
2934         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2935         avoid linear searches at runtime.
2936
2937         * aot-runtime.c (find_symbol): Update this to use the hash.
2938
2939         * mini.h: Bump AOT file format version.
2940
2941 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2942
2943         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2944         container.
2945
2946         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2947         too.
2948
2949         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2950         the distribution of got slot types.
2951
2952         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2953
2954         * method-to-ir.c: Add support for generating explicit null checks.
2955
2956 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2959         on a random thread if possible.
2960
2961         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2962         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2963         correctly.
2964
2965         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2966         regs. Pass the real size of the regs array to mono_unwind_frame ().
2967
2968         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2969         ones instead.
2970
2971 2009-11-24  Geoff Norton  <gnorton@novell.com>
2972
2973         * mini-darwin.c: Work around apple bug rdar://7209349  See
2974         http://openradar.appspot.com/7209349 for details.  Synopsis,
2975         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2976         never been initialized before.
2977
2978 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2981
2982         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2983
2984 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2987         OP_SHL_IMM is not 32 bit.
2988
2989 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2992
2993 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2996         encountered.
2997
2998         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2999         > 0 since some threads can resume if their resume_count is > 0.
3000         (invoke_method): Avoid reading freed memory.
3001
3002         * debugger-agent.c (process_suspend): Extract the suspend code from
3003         process_single_step_inner () to a separate function. Rework the code to prevent
3004         races between this function and thread interrupts.
3005
3006         * debugger-agent.c (suspend_current): Check the resume_count field instead
3007         of resume_one so suspends+resumes during single threaded invokes work
3008         correctly.
3009
3010 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3013         to make the generated code smaller.
3014
3015         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3016         sequence generated by recent LLVM versions.
3017
3018         * mini-llvm.c: Add support for a few simple cases which weren't supported
3019         before.
3020
3021         * mini-trampolines.c (mono_magic_trampoline): Don't call
3022         mono_arch_get_vcall_slot () when llvm is enabled.
3023
3024         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3025
3026         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3027         into a new function called common_call_trampoline () which is used by the
3028         llvm vcall trampoline as well.
3029
3030         * debugger-agent.c: Implement single threaded invokes.
3031
3032         * debugger-agent.c: Revert change which broke the agent on linux.
3033
3034         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3035         #557606.
3036
3037         * generics.cs: Add a test.
3038
3039 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * debugger-agent.c: Fix the cygwin build.
3042
3043 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * cprop.c: Remove this unused file.
3046
3047 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3050         #557262.
3051
3052         * basic.cs: Add a test.
3053
3054 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3057         in one more place.
3058
3059 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3062         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3063         it. Use this flag to control llvm related code paths instead of #ifdef
3064         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3065         AOT code.
3066
3067         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3068
3069         * mini.h: Bump AOT file format version.
3070
3071         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3072         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3073
3074         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3075         was used as an assembly filter.
3076
3077 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * unwind.c: Fix support for ppc.
3080
3081         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3082         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3083
3084 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3085
3086         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3087         port.
3088         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3089         added by the ps3 changes.
3090
3091 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * mini-gc.c: Resurrect this, so at least it compiles.
3094
3095         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3096
3097 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3100         create_event_list () so assembly filters can be used.
3101
3102         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3103         from the LMF.
3104
3105 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3108         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3109         is disabled.
3110
3111         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3112         classes for char/bool too.
3113
3114         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3115
3116         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3117         used.
3118
3119         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3120         Fix warnings.
3121
3122 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3123
3124         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3125         
3126         Code contributed under MIT/X11 license.
3127
3128 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3129
3130         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3131         threads in native code work.
3132
3133         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3134         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3135         version.
3136
3137 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3138
3139         * debugger-agent.c: Implementation for Windows platform.
3140
3141         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3142         primitives. Use SEH to implement breakpoints and single stepping.
3143
3144         * mini-x86.h: Enable soft debugger on Windows.
3145
3146         Code contributed under MIT/X11 license.
3147
3148 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3151         under XEN. Fixes #522894.
3152
3153         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3154
3155         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3156         interface calls in LLVM AOT code.
3157
3158         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3159         is found.
3160
3161         * mini-llvm.c: Add support for OP_VPHI.
3162
3163         * objects.cs: Add a test.
3164
3165 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3168         this is called on the debugger thread.
3169
3170 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3171
3172         * mini-llvm.c: Add soft-float support.
3173
3174         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3175         FCALL which returns an R4.
3176
3177         * driver.c (mono_main): Add a missing '\n'.
3178
3179         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3180         platforms which doesn't support the LLVM IMT trampoline.
3181
3182 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3183
3184         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3185
3186         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3187
3188         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3189         virtual calls.
3190
3191         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3192
3193 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3196         Instead of emitting a method_order table, sort the contents of the code_offsets
3197         table and do a binary search in the sorted table. The previous approach doesn't
3198         work with LLVM which emits methods in a arbitrary order.
3199
3200         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3201         in the .eh_frame section in ELF files.
3202
3203         * mini.h: Bump corlib file format version.
3204
3205         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3206
3207         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3208         LDMIA->LDM macro name change.
3209
3210 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3211
3212         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3213         x86.
3214
3215         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3216         SVN.
3217
3218         * aot-compiler.c: Ditto.
3219
3220         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3221         &align to mini_type_stack_size_full ().
3222
3223         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3224
3225         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3226
3227 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3228
3229         * mini-arm.c: Compute the stack space used by arguments using
3230         mini_type_stack_size_full ().
3231
3232 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * optflags-def.h: Remove dead TREEPROP optimization.
3235
3236 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3237
3238         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3239
3240         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3241
3242 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * driver.c (mono_jit_parse_options): New public API function to parse options
3245         as done by the runtime executable.
3246
3247         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3248         when handling named arguments.
3249
3250 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3253         for passing small vtypes in registers, make the CallInfo structures more
3254         similar to the code on the other platforms.
3255
3256         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3257         the code in the prolog requires it.
3258
3259 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3260
3261         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3262         (koush@koushikdutta.com).
3263
3264         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3265         where the thunk memory should be allocated from. Fixes appdomain unloading
3266         on arm.
3267
3268 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3271         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3272
3273 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3274
3275         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3276         AOT, as it is not implemented yet.
3277
3278         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3279
3280 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3281
3282         * debugger-agent.c: Fix windows build.
3283
3284 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3285
3286         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3287         after the client connects/disconnects.
3288
3289         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3290         when an exception of a given type is thrown.
3291
3292         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3293         only on an uncaught exception.
3294
3295         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3296
3297         * debugger-agent.c: Add a 'launch' option.
3298
3299 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * debugger-agent.c: Add a 'timeout' option.
3302
3303 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3306         the JDWP agent.
3307
3308 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * debugger-agent.c (set_breakpoint): Emit a log message.
3311
3312 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * mini-arm.c: Fix the arm build.
3315
3316 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3317
3318         * aot-compiler.c: don't leak the value returned from
3319         mono_type_full_name().
3320
3321 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3322
3323         * debugger-agent.c: defer including mono-mutex.h until we know the
3324         agent is supported.
3325
3326 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3327
3328         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3329         of pthreads directly.
3330
3331         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3332         exception handlers. Pass info argument.
3333
3334         * mini.h: Adjust signatures of soft debugger functions to pass void*
3335         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3336
3337         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3338         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3339         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3340         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3341
3342         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3343
3344         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3345         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3346         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3347         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3348
3349         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3350
3351         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3352
3353         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3354
3355         * mono-semaphore.h: Skeleton implementation for Windows.
3356
3357         Code contributed under MIT/X11 license.
3358
3359 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3360
3361         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3362
3363         Code contributed under MIT/X11 license.
3364
3365 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3366
3367         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3368
3369         Code contributed under MIT/X11 license.
3370
3371 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3374         debug info to 100 because 10 still slows down gdb too much.
3375
3376         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3377         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3378         them in the wrappers.
3379
3380 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3383
3384         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3385
3386         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3387         function mono_aot_get_array_helper_from_wrapper ().
3388
3389         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3390         array helper methods.
3391
3392 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3393
3394         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3395         the value was loaded from memory.
3396
3397         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3398         the value was loader from there.
3399
3400         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3401         without constant swizzle.
3402
3403 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3404
3405         * mini-amd64.c: Put soft debugger functions behind a
3406         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3407
3408         * mini-amd64.h: disable the soft debugger in windows.
3409
3410         Code contributed under MIT/X11 license.
3411
3412 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3413
3414         * mini-x86.c: Put soft debugger functions behind a
3415         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3416
3417         Code contributed under MIT/X11 license.
3418
3419 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3420
3421         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3422         to mono_arch_find_jit_info_ext.
3423
3424         Code contributed under MIT/X11 license.
3425
3426 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3429
3430         * debugger-agent.c: Add support for filtering events by assemblies.
3431
3432         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3433         the agent is not enabled.
3434
3435 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3436
3437         * exceptions-x86.c: hopefully last change to fix the windows build.
3438         This one courtesy of Jonathan Chambers.
3439
3440 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3441
3442         * debugger-agent.c: remove unused function.
3443
3444 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3445
3446         * debugger-agent.c: add #ifdefs for a few header files.
3447         * mini-x86.h: disable the soft debugger in windows.
3448         Step 1 of 2 to make this compile on windows with gcc.
3449
3450 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3453         as it breaks the build.
3454
3455 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3456
3457         Merge the soft debugger branch.
3458
3459         * debugger-agent.h debugger-agent.c: New files containing the soft
3460         mode debugger module.
3461
3462         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3463         at the appropriate locations.
3464
3465         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3466         opcode.
3467
3468         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3469         enable/disable single stepping.
3470
3471         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3472         which returns all information in a StackFrameInfo structure, and can handle the
3473         LMF frames added by the debugger.
3474
3475         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3476         about an LMF frame.
3477
3478         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3479         walker function which works on a specific thread and passes a StackFrameInfo
3480         structure to its callback.
3481
3482         * mini.c (mini_init): Initialize the debugger agent.
3483
3484         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3485
3486         * mini-ops.h: Add OP_SEQ_POINT opcode.
3487
3488         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3489         arguments to the debugger agent.
3490
3491 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3494         speed things up.
3495
3496         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3497
3498         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3499
3500         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3501
3502         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3503         if needed.
3504         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3505         sets the IMT argument and makes a virtual call.
3506
3507         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3508
3509 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3510
3511         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3512         the windows build.
3513
3514 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3517         runtime. Fixes #551228.
3518
3519 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3522
3523         * basic.cs: Add a test.
3524
3525         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3526         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3527         CONSTRAINED. Fixes #550964.
3528
3529         * generics.cs: Add a test.
3530
3531 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3532
3533         * mini-posix.c (add_signal_handler): Use
3534         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3535
3536 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3537
3538         Contributed under the terms of the MIT/X11 license by
3539         Jerry Maine <crashfourit@gail.com>.
3540
3541         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3542         sse4a for simd intrinsics.
3543
3544         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3545         sse4a for simd intrinsics.
3546
3547 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3550         instead of inst_p1 which is not the same on ILP32 platforms.
3551
3552 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3555         not the mscorlib one before calling mono_get_lmf_addr.
3556
3557         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3558         of the ip to the LMF.
3559
3560         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3561         immediate in the op->op_imm optimization.
3562
3563         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3564         understand. VTypes now work, but are not abi compliant, as they are
3565         split into 4 byte parts instead of 8.
3566         (emit_memcpy): Fix the unrolled case to work on the PS3.
3567
3568         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3569
3570         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3571         the default when static linking.
3572
3573         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3574
3575         * aot-compiler.c: Add an autoreg option to automatically register
3576         statically linked aot modules using ELF .ctors.
3577
3578         * genmdesc.pl: Add __ppc64__ to allowed defines.
3579
3580 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3581
3582         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3583         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3584
3585 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3586
3587         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3588
3589 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3592         which will contain the domain where the method was found.
3593
3594         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3595         mini_jit_info_table_find ().
3596
3597         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3598
3599         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3600
3601 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3604         set, its not supported yet.
3605
3606 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3609         iface wrapper is not found.
3610         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3611
3612 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3615         which have a different name.
3616
3617         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3618         wrappers and Array.GetGenericValueImpl ().
3619
3620         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3621         because of the change above.
3622
3623         * generics.cs: Add a test for full aot + generic array ifaces.
3624
3625 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3626
3627         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3628         that hides the previous one.
3629
3630 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3633         marshalled. Fixes #541623.
3634
3635 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3638
3639 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3642
3643 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3644
3645         * mini-posix.c (sigprof_signal_handler):
3646         Implemented support for building stat call chans in different ways.
3647
3648 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3649
3650         * mini-exceptions.c (mono_find_jit_info):
3651         Also check that a jit info has been found (fixes a profiler crash).
3652
3653 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3654
3655         * mini.c (mono_codegen):
3656         Call mono_profiler_code_buffer_new with correct code address.
3657
3658 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * driver.c (mono_main): Change the date in the copyright.
3661
3662 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3663
3664         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3665         allocator in shared generic code for open classes, because we
3666         can't get those classes' vtables.  We need to make managed
3667         allocators not depend on the vtable at compile-time to solve this.
3668
3669 2009-10-13  Martin Baulig  <martin@ximian.com>
3670
3671         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3672         `const guint8 *trampoline' argument; send both the old and the new
3673         notification.
3674
3675 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3676
3677         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3678         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3679         (can_marshal_struct): Skip structures with auto layout.
3680
3681         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3682
3683 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3684
3685         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3686         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3687         a variable to hold the stack slot used by the int<->float conversion opcodes.
3688
3689         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3690
3691 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3694         when using full-aot.
3695
3696 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3699         each instance of Comparer<T>.
3700
3701         * generics.cs: Add a new test.
3702
3703 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3704
3705         * driver.c (parse_debug_options): Add a 'gdb' option.
3706
3707         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3708
3709         * image-writer.c: Add support for emitting the image into a memory buffer.
3710
3711         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3712
3713         * aot-compiler.c: Add support for registering debug info with GDB using the
3714         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3715         MONO_XDEBUG to 'gdb'.
3716
3717 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3720         gdb mode.
3721
3722 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3725         can be used to set breakpoints in gdb.
3726
3727         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3728         segment to an absolute address.
3729
3730 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3731
3732         * method-to-ir.c: Use the managed array allocator method if
3733         available.
3734
3735 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3736
3737         * aot-compiler.c : Fix the MSVC builds
3738
3739         Code is contributed under MIT/X11 license.
3740
3741 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3744         avoid registering 1 symbol file per method with gdb.
3745
3746 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * mini-sparc.c: Fix the handling of enums with base type long.
3749
3750         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3751
3752         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3753         instead of using type->data.klass as the later doesn't work with generics.
3754
3755 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3756
3757         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3758         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3759         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3760         works differently now and we don't handle it in the JIT anymore.
3761
3762         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3763         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3764         the Thread class split.
3765
3766 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * driver.c: Don't run tests with the obsolete treeprop optimization.
3769
3770         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3771         variable volatile. Fixes #541577.
3772
3773         * basic-calls.cs: Add a new test.
3774
3775         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3776
3777 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3778
3779         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3780         work/required with recent iphone sdk versions.
3781
3782         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3783         structures.
3784
3785         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3786         in the VCALL decomposition code.
3787
3788 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3791
3792         * basic.cs: Add a test.
3793
3794         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3795         generic invokes.
3796
3797         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3798         searches all the domains of the current thread.
3799
3800         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3801
3802 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3803
3804         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3805         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3806
3807         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3808         for non-jit trampolines.
3809
3810         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3811
3812         * aot-compiler.c (add_wrappers): Ditto.
3813
3814         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3815         the size of the param area used by dyn_call to 6 which covers the majority of
3816         methods.
3817
3818         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3819
3820         * mini-arm.c: Implement support for passing/receiving
3821         longs and receiving floats in the dyn_call code.
3822
3823         * mini-amd64.c: Implement support for receiving vtypes in registers in
3824         the dyn_call code.
3825
3826         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3827         the dyn_call code.
3828
3829 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3830
3831         * mini-arm.c (get_call_info): Return more precise information in
3832         ArgInfo->regtype.
3833         (dyn_call_supported): Use the information in CallInfo.
3834
3835         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3836
3837         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3838         code.
3839
3840         * mini-arm.c: Update after the dyn_call api changes.
3841
3842         * mini.c (mini_create_jit_domain_info): Register a destructor function
3843         for the runtime_invoke_hash.
3844
3845         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3846         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3847         this function.
3848         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3849         (dyn_call_supported): Simplify this by using get_call_info ().
3850         (mono_arch_dyn_call_free): New destructor function.
3851
3852         * generics.cs: Remove a printf.
3853
3854         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3855
3856         * mini-arm.c: Add support for enum return values and passing a few arguments
3857         on the stack.
3858         
3859         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3860         dyn invoke.
3861
3862         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3863
3864         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3865         the dynamic invoke wrappers.
3866
3867         * mini-arm.c: Implement OP_DYN_CALL for arm.
3868
3869         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3870         supported by the dynamic runtime invoke wrapper.
3871
3872         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3873         runtime invoke wrapper.
3874
3875         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3876         if possible when running with full-aot.
3877
3878         * mini-ops.h: Add OP_DYN_CALL opcode.
3879
3880         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3881         with dynamic arguments lists similar to libffi.
3882
3883 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3884
3885         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3886         
3887         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3888         to NEWARR.
3889
3890         * iltests.il.in: Add a new test.
3891         
3892 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * aot-compiler.c (add_generic_instances): Add more instances of
3895         GenericEqualityComparer.
3896
3897 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3898
3899         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3900
3901 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3902
3903         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3904         comments on some functions that now can fail.
3905
3906 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3907
3908         * Makefile.am: Add Info.plist to EXTRA_DIST
3909
3910 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3913         static synchronized wrappers. Fixes #539500.
3914
3915 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3916
3917         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3918         properly.
3919
3920 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3923         lmf before calling filter clauses as well. Fixes #539550.
3924
3925         * exceptions.cs: Add a test.
3926         
3927 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * aot-compiler.c (add_generic_class): Add instances of
3930         Array.GetGenericValueImpl as well.
3931
3932         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3933         can be tested too.
3934
3935         * generics.cs: Add a fullaot linq test.
3936
3937 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3940         reg r1 on arm.
3941
3942 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3943
3944         * mini-trampolines.c (mono_delegate_trampoline) : Call
3945           mono_cominterop_get_invoke if the delegate target object
3946           is a COM object.
3947
3948         Code is contributed under MIT/X11 license.
3949
3950 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3951
3952         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3953         internal call is defined outside platform code. Reduce code 
3954         duplication with existing [Method|Field]AccessException
3955
3956 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3957
3958         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3959         if the return value is a small struct passed on regs.
3960
3961 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3964
3965         * mini-codegen.c: Enable the cpu description validation for arm.
3966
3967 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3970         test which depends on structs to objects.cs.
3971         
3972         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3973         require object model related stuff working.
3974
3975         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3976
3977         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3978
3979         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3980         against the instruction metadata in mini-ops.h. amd64 only for now.
3981
3982         * mini-ops.h: Fix some instruction descriptions.
3983
3984         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3985         unused instructions.
3986
3987 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * exceptions.cs: Add a new test.
3990
3991 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3992
3993         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3994
3995 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3998         skip empty phi opcodes.
3999         
4000         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4001         correctly by zero extending after loads. Skip methods containing calls
4002         to the monitor enter/exit trampolines.
4003
4004         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4005         when calling mono_thread_force_interruption_checkpoint ().
4006
4007         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4008
4009         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4010         64 bit thunks.
4011         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4012
4013         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4014         bootstrap could run.
4015
4016 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4019
4020 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4021
4022         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4023         of the method to
4024         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4025         LLVM might be very short.
4026
4027         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4028         in OP_THROW/RETHROW.
4029
4030         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4031         alignment on osx.
4032
4033 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4036         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4037         LLVM might be very short.
4038
4039 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4042         the alignment for the value of sp.
4043
4044 2009-09-01  Geoff Norton  <gnorton@novell.com>
4045
4046         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4047         managed wrappers in full aot.
4048
4049 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4052
4053 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4056
4057 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4060
4061         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4062         saved info.
4063
4064         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4065
4066         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4067         depend on the info MonoMethodHeader which could be missing in IL stripped
4068         assemblies.
4069
4070 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4073         they are only 4 byte aligned.
4074
4075 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4076
4077         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4078         was done previously, since using SP causes too many problems.
4079
4080         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4081         frames without a frame pointer works.
4082
4083         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4084         global register in methods with calls, since the calls can go through
4085         a static rgctx trampoline which doesn't save it.
4086
4087 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4090
4091 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4094
4095 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4096
4097         * method-to-ir.c: Fix warnings for uninitialized variables.
4098
4099 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4100
4101         * mini-exceptions.c:
4102         * aot-compiler.c: Fix printf warnings.
4103
4104 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4107         Add GetGenericValueImpl<string>.
4108         
4109         * aot-compiler.c (add_generic_instances): Add instances of
4110         GenericEqualityComparer<T> for primitive types. Only emit the array
4111         wrappers into the mscorlib image.
4112
4113 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4116         the methods_loaded array using amodule->info->nmethods.
4117
4118         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4119         (MONO_AOT_FILE_VERSION): Bump this.
4120
4121         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4122         to work.
4123
4124         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4125         MonoJitInfo doesn't belong to its methods aot image.
4126
4127 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4130
4131         * mini-arm.c: Fix warnings.
4132         
4133         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4134
4135         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4136         supports it.
4137
4138 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4141         avoid clobbering IP.
4142
4143         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4144         hold the trampoline argument, so its initial value is available during
4145         debugging.
4146
4147 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4148
4149         * exceptions-arm.c:
4150         * exceptions-hppa.c:
4151         * mini.c:
4152         * exceptions-s390x.c:
4153         * exceptions-mips.c:
4154         * exceptions-ppc.c:
4155         * exceptions-sparc.c:
4156         * exceptions-alpha.c:
4157         * aot-runtime.c:
4158         * mini-trampolines.c:
4159         * exceptions-x86.c:
4160         * exceptions-s390.c: add and use #define's instead of sizeof()
4161         for MonoJitInfo and MonoJitInfoTable.
4162
4163 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4164
4165         * tramp-arm.c:
4166         * tramp-amd64.c:
4167         * tramp-ppc.c:
4168         * tramp-x86.c: use a #define instead of sizeof() for a few
4169         structures that use a zero-length array.
4170
4171 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4172
4173         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4174         case when the method is dynamic. Fixes #529238.
4175
4176 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4179         of asserting when a method is JIT compiled in full-aot mode.
4180
4181 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4182         
4183         Contributed under the terms of the MIT/X11 license by
4184         Jerry Maine <crashfourit@gail.com>.
4185         
4186         * fixed wrong dates in changelog.
4187
4188 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4189         
4190         Contributed under the terms of the MIT/X11 license by
4191         Jerry Maine <crashfourit@gail.com>.
4192
4193         * basic-simd.cs: added test for packed double square root.
4194         * cpu-amd64.md: added opcode info for packed double square root.
4195         * cpu-x86.md: added opcode info for packed double square root.
4196         * mini-ops.h: added IR opcode for packed double square root.
4197         * mini-x86.c: added IR to native translation code for packed double square root.
4198         * mini-amd64.c: removed todo for packed double square root.
4199         * simd-intrinsics.c: added method to IR opcode converstion for
4200         packed double square root.
4201
4202 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4203
4204         Contributed under the terms of the MIT/X11 license by
4205         Jerry Maine <crashfourit@gail.com>.
4206
4207         * mini-amd64.c: Added a change to help tell the difference as 
4208         to what perpose the xmm register is being used--mainly to help
4209         with debuging.
4210         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4211         (one used for special cases) xmm registers for both fp
4212         and simd ops. Added define to turn on new feature in the regalloc
4213         that allows fp and simd ops to share the xmm regs happily.
4214         * codegen.c: Added code to detect for which perpose an xmm reg is
4215         being used (fp or simd) and to translate back and forth to the
4216         correct logical reg bank (fp or simd) for 'spill load's.
4217
4218 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4219
4220         Contributed under the terms of the MIT/X11 license by
4221         Jerry Maine <crashfourit@gail.com>.
4222
4223         * basic-simd.cs: Added tests for stressing the regalloc when running with
4224         16 simd regs and when simd and fp ops share the same reg bank.
4225
4226 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4227
4228         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4229         in shared generic code, we might have to look up the class in the
4230         RGCTX.  If we use the class directly, compute its GC descriptor.
4231
4232 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4233
4234         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4235
4236 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4237
4238         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4239         check for errors. Fixed the case when the class with the Main
4240         method is broken.
4241
4242 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4243
4244         Contributed under the terms of the MIT/X11 license by
4245         Jerry Maine <crashfourit@gail.com>.
4246
4247         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4248
4249 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4252
4253 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4254
4255         * method-to-ir.c: Fix naming of stelem and ldelem.
4256
4257 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * driver.c (main_thread_handler): Check that the assembly loaded
4260         matches the filename when doing AOT.
4261
4262 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4263
4264         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4265         call it anymore.
4266
4267         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4268         utils/mono-sigcontext.h).
4269
4270         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4271         #ifdef.
4272
4273 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4274
4275         * mini.c (mono_codegen):
4276         Call profiler hook to keep track of method code buffers.
4277
4278 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4279
4280         * method-to-ir.c: Invoke write barriers for the
4281         Interlocked.(Compare)Exchange JIT intrinsics.
4282
4283 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4284
4285         * Makefile.am (version.h): Fix issues when built out of tree.
4286         Remove some redundant 'grep's piped through 'sed's.
4287
4288 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4289
4290         This patch is contributed under the terms of the MIT/X11 license
4291
4292         * mini-ppc.c (mono_arch_output_basic_block):
4293         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4294         for bits 32-47 with signed load/store diplacements for bits
4295         48-63.  Use prefered base/offset order for indexed form.
4296         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4297         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4298         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4299         OP_LOADI2_MEMBASE): Same.
4300         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4301         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4302         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4303         indexed form.
4304         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4305         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4306         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4307         OP_LOADI1_MEMINDEX): Same
4308         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4309         OP_STORER8_MEMINDEX): Same
4310         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4311         computations.
4312         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4313         for bits 32-47 with signed load/store diplacements for bits
4314         48-63.  Use prefered base/offset order for indexed form.
4315
4316 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4317
4318 This patch is contributed under the terms of the MIT/X11 license
4319
4320         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4321         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4322         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4323         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4324         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4325         cfg->stack_usage to avoid size warnings.
4326         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4327         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4328         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4329         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4330         to convert.
4331         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4332         after code varible is initialized.
4333         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4334         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4335         (mono_arch_emit_epilog): 
4336         Move Use ppc_load32 for cfg->stack_usage to avoid size
4337         warnings.
4338
4339 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4340
4341         * method-to-ir.c: The write barrier doesn't do the store anymore,
4342         so we have always to emit it.  Also, emit the wbarrier after the
4343         store.
4344
4345 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4348         for argument count 3 too.
4349
4350 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4353         the caller handle the exceptions.
4354         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4355         method. Fixes #524498.
4356
4357 2009-07-22  Geoff Norton  <gnorton@novell.com>
4358
4359         * mini-exceptions.c: Fix build on ia64.
4360
4361 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4362
4363         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4364         barriers.
4365
4366 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4367
4368         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4369         code.
4370
4371 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * basic-simd.cs (Main): Pass args to the test driver.
4374
4375 2009-07-20  Geoff Norton  <gnorton@novell.com>
4376
4377         * mini-x86.h: Fix the x86 version guards to use Apple's
4378         properly defined macros.
4379
4380 2009-07-20  Geoff Norton  <gnorton@novell.com>
4381
4382         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4383         aligned access.
4384
4385 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4388         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4389         the information which is needed for invokes, so only one locking+hash table
4390         lookup is needed.
4391
4392         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4393         
4394         * aot-compiler.c (add_generic_instances): Emit instances of 
4395         GenericComparer<T> for primitive types.
4396
4397 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4398
4399         * mini-posix.c: Fix linux build.
4400
4401 2009-07-19  Geoff Norton  <gnorton@novell.com>
4402
4403         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4404         mono_gdb_render_native_backtraces
4405         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4406         so we implement the sane semantics to the runtime here
4407         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4408         so we need to call it differently (mono_gdb_render_native_backtraces)
4409         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4410         here for default implementations.
4411         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4412         support Apple's weird syscall (SYS_fork) implementation and not busy
4413         loop in abort() on native crashes on OSX anymore.
4414
4415 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * aot-runtime.c (load_method): Change the handling of the
4418         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4419         are used.
4420
4421         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4422
4423 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4426         seems to break the aot tests.
4427         
4428         * mini.c (mono_patch_info_equal): Fix the handling of 
4429         MONO_PATCH_INFO_RGCTX_FETCH.
4430
4431 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4434
4435         * mini.c (mono_patch_info_hash): Fix the handling of 
4436         MONO_PATCH_INFO_INTERNAL_METHOD.
4437         (mono_patch_info_equal): Ditto.
4438
4439 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4442         in a few places.
4443         
4444         * mini-llvm.c: Add some infrastructure for AOT support.
4445
4446 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * mini-llvm-cpp.c: Update to the latest llvm api.
4449         
4450         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4451         option to false to prevent llvm from installing signal handlers which
4452         trip up the gc.
4453         
4454 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4455
4456         * cpu-x86.md:
4457         * cpu-amd64.md: Revert previous change as those instructions
4458         take 2 separate arguments. Remember to read the arch docs more
4459         carefully next time.
4460
4461 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4462
4463         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4464
4465 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4466
4467         * mini-ppc.c: exploit multiple load/store units if available (rest of
4468         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4469         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4470
4471 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4472
4473         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4474         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4475
4476 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4477
4478         * cpu-x86.md: Fix missing clobbering from trancendental simd
4479         ops.
4480
4481         * cpu-amd64.md: Same.
4482
4483 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4484
4485         Contributed under the terms of the MIT/X11 license by
4486         Jerry Maine <crashfourit@gail.com>.
4487
4488         * basic-simd.cs: Added tests for single and doulble indexers.
4489
4490         * cpu-amd64.md: Added simd opcode information.
4491
4492         * mini-amd64.c: Added IR to native simd generation code.
4493         Added simd register names and function that returns them.
4494
4495         * mini-amd64.h: Added marcos to turn on simd code compilation in
4496         amd64. Added max simd register count marco. Added caller/callee
4497         register mask marcos. Added marcos to use simd register bank.
4498
4499         * mini.h: Added helper marco for shufling dwords and simple
4500         floats.
4501
4502 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4505
4506         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4507
4508         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4509         the length of the native code as well.
4510
4511         * basic-simd.cs: Add a test for #521662.
4512
4513 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4514
4515         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4516
4517 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4518
4519         * mini.c: Register function for getting the IP from a signal
4520         context with metadata.
4521
4522 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4525         call a generic class init trampoline if needed. Fixes #519336.
4526
4527         * generics.cs: Add a test.
4528         
4529 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4530
4531         * method-to-ir.c: When doing a call which might be remote from
4532         shared generic code to other shared code with open type arguments,
4533         get the remoting invoke wrapper from the RGCTX and do an indirect
4534         call to it.
4535
4536 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4539         after the unbox trampoline in the full-aot case.
4540
4541 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4542         
4543         * mini.c: Move initialization of jit_mutex before debugger initialization
4544         
4545         to avoid crashes.
4546         
4547         
4548         * Info.plist: added Info.plist and link flag to enable the mono executable
4549         to access other processes. Requires codesigning of the executable to work.
4550         
4551         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4552         
4553         compile on OS X.
4554         
4555
4556 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4559
4560 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4561
4562         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4563         when the generic instance is an instantiation of a subclass of the
4564         methods class. Fixes #517166.
4565
4566 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4569         code.
4570
4571         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4572         AOTed code.
4573
4574         * CMakeLists.txt: Add minimal support for installation.
4575
4576 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4579         determine whenever a method is directly callable to a separate function.
4580
4581         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4582         needed ones as a result of the previous change.
4583
4584         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4585         type of register arrays.
4586
4587         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4588         type of register arrays.
4589
4590 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4591         
4592         Contributed under the terms of the MIT/X11 license by
4593         Jerry Maine <crashfourit@gail.com>.
4594
4595         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4596
4597 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4598
4599         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4600
4601 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4602
4603         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4604         dump of structure return value. Fix some formatting.
4605         * cpu-s390x.md: Fix lengths of instruction sequences.
4606         * mini-s390.c: Minor formatting changes.
4607
4608 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4611         Use sigaction on freebsd as well.
4612
4613 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4616         uses #ifdef on it.
4617         
4618         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4619
4620 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4621
4622         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4623
4624 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4625
4626         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4627
4628 2009-06-20  Martin Baulig  <martin@ximian.com>
4629
4630         * debug-mini.c
4631         (MonoDebuggerThreadFlags): New enum typedef.
4632         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4633         (mono_debugger_thread_created): Added `gpointer func' argument;
4634         initialize the new `thread_flags' field.
4635
4636 2009-06-18  Martin Baulig  <martin@ximian.com>
4637
4638         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4639         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4640
4641         * debug-debugger.c
4642         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4643         flag in `MONO_DEBUGGER__info.runtime_info'.
4644
4645         * driver.c
4646         (mono_main): Call mini_debugger_set_attach_ok() if generics
4647         sharing is disabled.
4648
4649 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4650
4651         * aot-compiler.c (add_wrappers): Fix a warning.
4652
4653         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4654         the ppc load/store macro changes.
4655
4656 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4659
4660         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4661         not just the got symbol.
4662
4663         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4664         on ppc.
4665
4666         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4667         ppc.
4668         
4669         * aot-compiler.c: Remove some fixmes.
4670
4671         * driver.c (mono_main): Print a helpful message when cross-compiling.
4672
4673         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4674
4675         * method-to-ir.c (initialize_array_data): Do the optimization if the
4676         target byte order is little endian, instead of the host byte order.
4677
4678         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4679         wrappers into the mscorlib image, Emit a unique plt symbol for each
4680         image, emit symbols for plt entries.
4681
4682         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4683         a .size directive.
4684         
4685 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4686
4687         * aot-compiler.c (add_wrappers): Avoid calling 
4688         mono_marshal_get_type_info () since it can assert for some types.
4689
4690         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4691         ldtoken are used inside wrappers.
4692
4693         * helpers.c: Add support for prefixing tools with the arch name.
4694
4695         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4696         quantities when using ilp32.
4697
4698         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4699         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4700
4701         * image-writer.c: Use .long on ilp32.
4702
4703         * aot-compiler.c: Use 32 bit loads on ilp32.
4704         
4705 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4708
4709         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4710
4711         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4712
4713         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4714         second got slot of every aot image.
4715         
4716         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4717         aot on platforms with function pointers.
4718
4719         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4720         support for aot/full aot on ppc/ppc64.
4721         
4722         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4723         arguments which are needed on ppc.
4724
4725         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4726         argument.
4727
4728         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4729         
4730         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4731
4732         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4733
4734         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4735
4736         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4737
4738 2009-06-17  Geoff Norton  <gnorton@novell.com>
4739
4740         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4741
4742 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4745         to control whenever the dwarf writer is in xdebug or aot mode.
4746         (emit_class_dwarf_info): Use a separate abbrev for structures without
4747         children.
4748
4749         * aot-compiler.c: Pass the appending parameter to 
4750         mono_dwarf_writer_create ().
4751
4752         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4753         falls through to its next bblock. Fixes #513931.
4754
4755         * iltests.il: Add a test.
4756
4757         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4758         infor even if emit_line is FALSE, as the apple linker seems to require it.
4759
4760         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4761
4762         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4763         gcc does.
4764         (emit_fde): Ditto.
4765
4766 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4769         mips build.
4770
4771 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4774         'has_call_handler' fields.
4775
4776         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4777
4778         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4779         first bblock if not needed. Fixes #512790.
4780         
4781 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4784         
4785         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4786         wrappers.
4787
4788         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4789         remoting-invoke-with-check wrappers, which are not needed when running with
4790         full-aot, since it doesn't support remoting.
4791         
4792 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4795
4796         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4797         method info, it is not used anymore.
4798
4799         * mini.h: Bump AOT file format version.
4800         
4801         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4802         word smaller.
4803
4804         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4805         change above.
4806         
4807         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4808
4809         * mini.h: Bump AOT file format version.
4810         
4811 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4812
4813         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4814         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4815         iphone.
4816
4817         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4818         of CKFINITE and FBGE for VFP.
4819
4820 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * aot-compiler.c: Don't align code to 16 bytes on arm.
4823         
4824         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4825         before the methods they belong to.
4826
4827         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4828         the full-aot case if possible, since the trampoline will be called right 
4829         away.
4830
4831         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4832         trampolines to 1024 after the change above.
4833
4834         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4835         trampoline to save 8 bytes per trampoline.
4836
4837         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4838         change above.
4839
4840 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4843
4844 2009-06-08  Martin Baulig  <martin@ximian.com>
4845
4846         * debug-mini.c
4847         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4848         (_mono_debugger_throw_exception): Don't make this static.
4849         (_mono_debugger_unhandled_exception): Likewise.
4850         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4851
4852         * debug-mini.c
4853         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4854         (_mono_debugger_throw_exception): Add function prototype.
4855         (_mono_debugger_unhandled_exception): Likewise.
4856
4857         * mini-exceptions.c
4858         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4859         arg; return the first exception handler if the exception is caught
4860         and we're running inside the debugger.
4861         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4862         improve exception handle inside runtime-invoke, check whether the
4863         exception is actually caught in the method being invoked and not
4864         by the runtime-invoke-wrapper.
4865
4866 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * image-writer.c: Improve support for the osx assembler.
4869
4870         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4871         support them.
4872
4873 2009-06-08  Martin Baulig  <martin@ximian.com>
4874
4875         * debug-mini.c
4876         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4877         (_mono_debugger_throw_exception): Don't make this static.
4878         (_mono_debugger_unhandled_exception): Likewise.
4879         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4880
4881         * debug-mini.c
4882         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4883         (_mono_debugger_throw_exception): Add function prototype.
4884         (_mono_debugger_unhandled_exception): Likewise.
4885
4886         * mini-exceptions.c
4887         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4888         arg; return the first exception handler if the exception is caught
4889         and we're running inside the debugger.
4890         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4891         improve exception handle inside runtime-invoke, check whether the
4892         exception is actually caught in the method being invoked and not
4893         by the runtime-invoke-wrapper.
4894
4895 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * image-writer.c (append_subsection): Don't align subsections of the
4898         debug_line section as a workaround.
4899
4900         * dwarfwriter.c: Emit line number info in the AOT case as well.
4901
4902 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4903
4904         This patch is contributed under the terms of the MIT/X11 license
4905
4906        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4907        code_len <= code_size
4908
4909 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4910
4911         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4912
4913 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4916         invoke wrappers, we now use trampolines instead.
4917
4918 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4919
4920         * mini-darwin.c: The exception thread must not be registered with
4921         the GC.
4922
4923 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4924
4925         * mini-gc.c: Disable the code because it makes SGen crash.
4926
4927 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4930         instead of asserting.
4931
4932 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4935         output file after the code has been compiled.
4936
4937 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4940
4941 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4944         entries distinction to simplify the code.
4945
4946         * mini.h: Bump AOT file format version.
4947         
4948 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4949
4950         * objects.cs: Fix the signature of one of the tests.
4951
4952         * mini.c (mini_create_ftnptr): New helper function, moved here from
4953         object.c.
4954         (mini_get_addr_from_ftnptr): Ditto.
4955         (mini_init): Install the new helpers.
4956
4957 2009-05-28  Martin Baulig  <martin@ximian.com>
4958
4959         Correctly initialize the debugger when embedding Mono.
4960
4961         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4962         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4963         see documentation in mini_debug_running_inside_mdb().
4964
4965         * debug-debugger.c
4966         (mini_debug_running_inside_mdb): New function to check whether
4967         we're running inside mdb.
4968
4969         * mini.c (mini_init): Call mini_debugger_init() if we're running
4970         inside the debugger.
4971
4972         * driver.c (mono_main): Moved the call to mini_debugger_init()
4973         into mini_init() to make this work when embedding Mono.
4974
4975         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4976         calls to mini_debugger_init().
4977
4978         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4979         mono_debugger_main() -> mini_debugger_main() and put them inside a
4980         `MONO_DEBUGGER_SUPPORTED' conditional.
4981
4982 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4983
4984         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4985         this is no longer in use.
4986         * mini.h: Same.
4987
4988 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4991
4992         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4993         methods.
4994
4995 2009-05-27  Martin Baulig  <martin@ximian.com>
4996
4997 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4998
4999         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5000         long_conv_to_r_un to 64 bits.
5001
5002         * cpu-x86.md: Increase the instruction size due to the changes.
5003
5004         * iltests.il.in: Add regression test.
5005
5006         Fixes #467201.
5007
5008 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5009
5010         * objects.cs: Move the previous test from basic.cs to here.
5011
5012 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5013
5014         * basic.cs: Add regression test for #506915.
5015
5016 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5019         optimization we must check the bb of the first byte of stobj as
5020         it's the only one set in cil_offset_to_bb.
5021
5022         Fixes #506915.  
5023
5024 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * image-writer.c: Fix pointer directive on ppc64.
5027
5028 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * image-writer.c (asm_writer_emit_section_change): Avoid using
5031         .bss subsections on ppc too.
5032
5033 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * image-writer.c: Fix the definition of TARGET_ASM_....
5036         
5037         * image-writer.c: Fix the emission of assembler directives in the last
5038         change.
5039
5040         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5041         exception throwing code to accomodate ppc64.
5042
5043         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5044         size to work on ppc64 too.
5045
5046         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5047         too.
5048
5049         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5050         the assembler dialect instead of using platform specific defines.
5051
5052 2009-05-22  Geoff Norton  <gnorton@novell.com>
5053
5054         * mini-arm.c (get_call_info): If a structure is split between the stack
5055         and argument registers, we should not advance the stack pointer by the entire
5056         native size, but just by the amount that spilled.
5057
5058 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5059
5060         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5061         correctly.
5062
5063 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5064
5065         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5066         wrappers normally.
5067         
5068         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5069         methods so wrapper don't get added twice.
5070         (add_generic_instances): Don't add methods of arrays.
5071
5072         * generics.cs: Mark one test as !FULLAOT.
5073
5074 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5075
5076         * mini-x86.c (emit_move_return_value): Remove unused vars.
5077
5078 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5081         decomposing 8 bytes structs into a LCALL.
5082
5083         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5084         pointer for where to store the returned regs.
5085
5086         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5087         state the concern.
5088
5089         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5090
5091 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5092
5093         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5094         without getenv.
5095
5096 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5099
5100         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5101         generics.
5102
5103 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * local-propagation.c (mono_local_cprop): Avoid local propagation
5106         across paired add/sub if the first instruction dest reg is it's
5107         source reg. For example:
5108
5109         int_add_imm R12 <- R12 [1] clobbers: 1
5110         int_sub_imm R42 <- R12 [1] clobbers: 1
5111
5112         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5113         maintain the math identify.
5114
5115         Fixes #505375.
5116
5117 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5118
5119         * Makefile.am: avoid going on the network just to get the revision,
5120         use git log instead
5121
5122 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5123
5124         Fixed estimate for short branches on amd64 (they were off mark, and
5125         enabling call prolog-epilog instrumentations caused assertions).
5126         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5127         estimate for the maximum length of this basic block.
5128         * mini-amd64.c:
5129         - mono_arch_emit_prolog: compute max_length for each basic block
5130           (instead of max_offset), and inflate size estimate also for entry bb
5131           in case of code instrumentation.
5132         - mono_arch_output_basic_block: get rid of "cpos" (the current
5133           estimated "position" in the code), and always use "offset" instead,
5134           which is accurate; at the beginning of the function quickly recompute
5135           max_offset for all the remaining blocks, starting from the current
5136           cfg->code_len (which is correct, and not estimated) and using the
5137           estimated block lengths computed previously.
5138
5139 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5140
5141         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5142         functions, it is already done in the caller.
5143
5144         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5145
5146         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5147         MONO_ARCH_GSHARED_SUPPORTED define.
5148
5149         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5150
5151         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5152         function.
5153
5154 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5157         call to mono_marshal_get_rgctx_invoke ().
5158
5159         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5160         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5161         gshared use the static rgctx trampolines now.
5162         
5163         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5164         platform supports it.
5165
5166 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5167
5168         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5169
5170         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5171
5172 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5175
5176         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5177         for ppc.
5178
5179 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5180
5181         Made it possible for mono_arch_instrument_epilog to preserve
5182         argument registers, otherwise instrumenting the "epilogue" before
5183         a tail call would clobber them.
5184         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5185         if like mono_arch_instrument_epilog but with an additional parameter
5186         that states if argument registers must be preserved.
5187         * mini.c: implemented mono_arch_instrument_epilog as a call to
5188         mono_arch_instrument_epilog_full without asking to preserve argument
5189         registers (this makes the existing code work as usual).
5190         * mini-amd64.c:
5191         - mono_arch_instrument_epilog: add parameter to transform it into
5192         mono_arch_instrument_epilog_full, and preserve argument registers
5193         when required.
5194         - mono_arch_output_basic_block, OP_TAILCALL case: call
5195         mono_arch_instrument_epilog_full.
5196         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5197         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5198         only transformed mono_arch_instrument_epilog into
5199         mono_arch_instrument_epilog_full.
5200
5201 2009-05-15  Geoff Norton  <gnorton@novell.com>
5202
5203         * mini-darwin.c: This works on arm now.
5204
5205 2009-05-14  Geoff Norton  <gnorton@novell.com>
5206
5207         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5208         embedding api.
5209
5210 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5211
5212         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5213         label names.
5214
5215         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5216         wrappers during full aot mode correctly.
5217
5218         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5219         methods correctly.
5220
5221         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5222         mono_metadata_type_hash ().
5223
5224 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5225
5226         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5227         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5228         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5229         Removed MONO_INST_BRLABEL from the instruction flags, and the
5230         remaining code that used it, because we do not support branches inside
5231         basic blocks (and branch target labels) anymore.
5232         * Makefile.am: As part of the above cleanup, remove reference to
5233         BURG files which don't exist anymore.
5234
5235 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5236
5237         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5238         osx.
5239
5240         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5241         to use mono_arch_throw_corlib_exception.
5242
5243         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5244         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5245
5246         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5247         domain mempool.
5248
5249         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5250
5251         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5252         for the got to make debugging easier and to avoid confusing it with the
5253         system got.
5254         
5255         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5256         method so a breakpoint can be set when using gdb.
5257
5258 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5261         on mono_method_get_imt_slot ().
5262
5263         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5264         num_decodes variables.
5265
5266         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5267         change as it doesn't seem to work.
5268         
5269         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5270         wrappers.
5271
5272 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5273
5274         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5275         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5276
5277         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5278         builder when using full aot.
5279
5280         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5281         here, it is already handled.
5282         
5283         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5284         correctly for IMT.
5285
5286         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5287
5288         * mini-arm.h: Enable IMT for full aot.
5289         
5290         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5291         arch doesn't support it.
5292
5293         * mini.c (mini_init): Don't disable IMT for full aot if the
5294         architecture supports it.
5295
5296         * mini.h (MonoAotTrampoline): New enum containing the different types
5297         of 'numerous' trampolines.
5298         (MONO_AOT_FILE_VERSION): Bump this.
5299
5300         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5301         static rgctx trampolines. Add support for full-aot IMT thunks.
5302
5303         * mini-amd64.h: Enable IMT for full aot.
5304
5305         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5306         to exclude tests belonging to a category.
5307
5308         * generics.cs: Mark some tests with a !FULLAOT category.
5309
5310         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5311         generics tests.
5312
5313 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5316         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5317         (emit_plt): Fix a warning.
5318
5319 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5322         back into aot-compiler.c to a place where the other functions shared by
5323         the runtime and aot compiler are.
5324         
5325         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5326         as done previously, instead of in MonoAotFileInfo, since pointers might have
5327         alignment requirements.
5328
5329         * mini.h: Bump AOT file format version.
5330
5331 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5332
5333         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5334         that is used at runtime from the aot-compiler.c, this makes it
5335         work on setups that remove the AOT compiler from the output
5336         image. 
5337
5338 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5339
5340         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5341         PPC.
5342
5343         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5344
5345         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5346
5347         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5348         stuff to mono_arch_decompose_long_opts ().
5349         (mono_decompose_opcode): Remove some dead code.
5350
5351 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5352
5353         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5354         cmethod can be null for quite a some reasons.
5355
5356 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5357
5358         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5359
5360 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5363
5364 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5365
5366         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5367         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5368         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5369         calls returning structures by addr on amd64.
5370
5371         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5372
5373         * iltests.il.in: Restructure the tail call tests a bit.
5374         
5375 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5378         for virtual methods too.
5379
5380 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5381
5382         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5383         due to regression in verifying System.dll.
5384
5385 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5386
5387         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5388         in dynamic methods.
5389
5390         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5391         instances.
5392
5393         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5394         g_str_hash () which can change.
5395
5396         * driver.c (mini_regression): Disable optimizations not supported by
5397         the cpu. Fixes #500019.
5398
5399         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5400         build.
5401
5402 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5403
5404         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5405         to the latest LLVM code.
5406
5407 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5408
5409         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5410
5411 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5412
5413         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5414         x86/amd64.
5415
5416         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5417         no longer saving offsets, so just save the patch types along with the other
5418         info.
5419         * aot-runtime.c (load_patch_info): Update after the changes to 
5420         encode_patch_list ().
5421         (decode_got_entry): Removed, merged into load_patch_info ().
5422         (is_shared_got_patch): Removed, call the same function from
5423         aot-compiler.c.
5424
5425         * mini.h: Bump aot file format version.
5426         
5427         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5428         half-finished no-dlsym code.
5429
5430         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5431         option.
5432
5433         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5434         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5435
5436 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5439         buffer length to work with AOT code.
5440
5441         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5442         ldfld/stfld opcodes.
5443
5444         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5445         as it is not used.
5446
5447         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5448
5449         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5450
5451         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5452         LLVM API.
5453
5454         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5455         if needed. Don't decompose long operations when using llvm.
5456
5457 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5460         PAGESIZE constant.
5461
5462         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5463
5464 2009-05-03  Martin Baulig  <martin@ximian.com>
5465
5466         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5467         mono_debugger_insert_method_breakpoint() since the class init
5468         handler we're inserting at the top of the method already gives us
5469         a notification.
5470
5471 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5474         to mono_arch_decompose_long_opts () for x86 and arm.
5475
5476 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5479         TARGET_AMD64 here.
5480
5481 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5484         JIT code.
5485
5486 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5489         number of trampolines used in full-aot mode.
5490
5491         * aot-compiler.c: Add an ntrampolines option to set the number of 
5492         trampolines emitted in full-aot mode.
5493
5494 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5497         a volatile load. Get rid of get_tempname (), llvm assigns names
5498         automatically.
5499
5500         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5501         builder function.
5502
5503         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5504         a value.
5505
5506         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5507         level 1.
5508
5509         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5510         to the same register as a fixed sreg2. Fixes #497271.
5511
5512         * iltests.il.in: Add a new test.
5513
5514 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5517         stack, since pushes complicate exception handling.
5518
5519         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5520         the stack if they are passed using moves.
5521
5522         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5523
5524         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5525         when using llvm.
5526
5527         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5528         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5529         of FMOVE if it is an R4.
5530
5531 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5532
5533         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5534
5535         * mini.h (LLVMCallInfo): New structure to store calling convention 
5536         information for the LLVM back end similar to the CallInfo structures in 
5537         the back-ends.
5538
5539         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5540         call information in a format usable by LLVM.
5541         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5542
5543         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5544         mono_llvm_emit_call () when compiling using LLVM.
5545
5546         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5547         comments to all functions. Fix memory leaks. Add a public init/cleanup
5548         function.
5549
5550         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5551
5552         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5553         mono_array_new_va () jit icall.
5554         
5555 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5556
5557         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5558         multiple machine description files to be specified.
5559         * mini-ops.h: fixes for cross-compilation.
5560
5561 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5562
5563         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5564         some porting work.
5565
5566 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5567
5568         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5569         to prevent asserts in various passes. Fixes #497220.
5570
5571 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5572
5573         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5574         a racy assert.
5575
5576         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5577         table to avoid duplicates.
5578
5579         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5580         
5581         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5582         option is used.
5583
5584 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5585
5586         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5587         is for method or field access.
5588
5589 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5590
5591         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5592         a Value to stdout.
5593
5594         * mini-llvm.c (mono_llvm_emit_method): Use it.
5595         
5596         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5597         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5598         on volatile values.
5599
5600         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5601         synchronized methods.
5602
5603         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5604
5605         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5606
5607         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5608         OP_LOADI8_MEM.
5609
5610         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5611         allowing some options to be set dynamically.
5612
5613 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5616         unconditional branch.
5617
5618         * mini.h (MonoTrampolineType): Add new trampoline type 
5619         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5620         compiled code.
5621
5622         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5623         function.
5624
5625         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5626         creation function.
5627
5628         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5629         is enabled. Instead, use the llvm vcall trampoline.
5630         
5631         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5632
5633         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5634         
5635         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5636         functions.
5637
5638         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5639         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5640
5641         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5642         OP_IA64_CSET opcode.
5643
5644         * mini.c: Fix a warning.
5645
5646         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5647         THROW to the appropriate llvm type.
5648
5649 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5650
5651         * mini.c (mini_method_compile): Add statistics for methods JITted
5652         with/without LLVM.
5653
5654 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5657         OP_IA64_CMP_<cond>_IMM opcodes.
5658
5659 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5662         corlib exceptions.
5663
5664         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5665         correctly.
5666
5667         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5668         GENERICINST.
5669
5670 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5671
5672         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5673
5674 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5675
5676         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5677         support.
5678
5679         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5680         rgctx invoke trampolines for x86.
5681
5682         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5683         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5684         (mono_arch_get_vcall_slot): Simplify this.
5685
5686 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5689         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5690
5691 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5692
5693         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5694         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5695
5696         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5697
5698         * liveness.c (visit_bb): Remove a needless assert.
5699
5700 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5703         full aot support to the arch specific code.
5704
5705         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5706
5707         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5708
5709         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5710         
5711         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5712         collect information about the delegate invoke impl trampolines.
5713
5714         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5715         to save trampolines during full-aot mode.
5716
5717         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5718         creation function which returns a trampoline which sets the rgctx
5719         argument.
5720         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5721         wrapper if possible.
5722         (mono_delegate_trampoline): Ditto.
5723
5724         * mini.c (mono_jit_runtime_invoke): Ditto.
5725
5726         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5727         
5728         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5729
5730         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5731         
5732 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5733
5734         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5735         just setting the opcode to OP_NOP.
5736
5737 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5738
5739         * mini.c (mini_method_compile): Put the last change inside an 
5740         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5741         
5742         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5743         and extend live ranges to cover the whole method when using xdb.
5744
5745         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5746         do it in the trampolines.
5747
5748         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5749         needed.
5750
5751         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5752         
5753         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5754         call code in full-aot mode since IMT is disabled there.
5755         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5756         new JIT no longer has that restriction.
5757
5758         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5759
5760         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5761         a more compact format.
5762         (mono_aot_wrapper_name): New function to return a unique name for a
5763         wrapper method, also used by the AOT runtime.
5764
5765         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5766         aot-compiler.c.
5767
5768         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5769         when a ICollection<T> etc is encountered.
5770         (add_generic_instances): Process method arguments/locals too.
5771         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5772         trampoline names.
5773
5774         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5775         
5776 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5779
5780         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5781
5782         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5783         representing the result of the decomposition. Nullify instructions
5784         instead of setting them to OP_NOP since nops can't have registers
5785         set.
5786
5787 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5790         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5791         info. Strip 'mapping symbols' on ARM.
5792
5793         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5794         
5795         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5796         this with the native genmdesc.
5797
5798 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5799
5800         * aot-runtime.c:  Fixing the MSVC build.
5801
5802         Code is contributed under MIT/X11 license.
5803
5804 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5805
5806         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5807         JITted code depends on it.
5808
5809 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5810
5811         * aot-compiler.c: Use new MonoGenericParam accessors.
5812
5813 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5814
5815         Reduce memory usage and improve correctness wrt MonoGenericParam
5816         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5817         handing.  Avoid allocating MonoGenericParams, but use the ones in
5818         the container itself.
5819
5820 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5821
5822         * tasklets.c: Return exceptions in the out argument.
5823
5824 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5827         opcode. Use pointer types in more places instead of casting them to 
5828         integers.
5829
5830         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5831         optimizations.
5832         (mono_llvm_optimize_method): New helper function to optimize a method.
5833
5834         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5835         widening code so it could be called from more places.
5836         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5837         code paths in the call opcodes.
5838
5839 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5840
5841         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5842
5843 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * dwarfwriter.c: Use _ to separate class name 
5846         components as gdb can't handle '.'. Represent reference variables
5847         as 'class <NAME>&'.
5848         
5849         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5850
5851         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5852         
5853         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5854
5855         * gc-test.cs: New file with GC stack marking tests.
5856         
5857         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5858         negative numbers for vfp.
5859
5860         * basic-float.cs: Add a test.
5861         
5862 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5863
5864         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5865
5866 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5867
5868         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5869         part of tasklet/continuation support.
5870
5871 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5872
5873         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5874         amd64 opcodes inside an ifdef.
5875
5876         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5877         of complex types.
5878         
5879         * dwarfwriter.c (emit_type): Emit the class info for classes.
5880
5881 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5882
5883         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5884
5885         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5886
5887         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5888
5889         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5890
5891 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5892
5893         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5894
5895         * mini-llvm.c: Update comments.
5896
5897         * mini.h (COMPILE_LLVM): New macro.
5898
5899         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5900
5901         * ssa.c (mono_ssa_compute): Ditto.
5902         
5903         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5904         the unwind ops from a DWARF FDE.
5905
5906         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5907         methods by extracting the dwarf unwind ops from the unwind info generated
5908         by LLVM.
5909         
5910         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5911         calls.
5912
5913         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5914         addressing modes.
5915
5916 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5917
5918         * Makefile.am (llvm_sources): Enable this.
5919
5920         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5921         failing back to the JIT if something cannot be handled.
5922
5923         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5924         compiling with LLVM.
5925
5926         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5927         compiling with LLVM.
5928
5929         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5930         compiling with LLVM.
5931
5932         * mini-ops.h: Add a few opcodes needed by LLVM.
5933
5934         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5935         has no unwind info.
5936
5937         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5938         backend.
5939
5940         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5941
5942         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5943
5944 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5945
5946         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5947         ridiculously large methods.
5948
5949 2009-03-31  Martin Baulig  <martin@ximian.com>
5950
5951         * debug-debugger.c (debugger_remove_breakpoint): Call
5952         mono_debugger_remove_class_init_callback ().
5953
5954 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5955
5956         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5957         right before emitting code, not at the start.
5958
5959         * mini.c (mono_postprocess_patches): Extract this into a separate function
5960         from mono_codegen ().
5961
5962         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5963         byref types correctly.
5964
5965 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5968         by the last change.
5969
5970 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5973         indirect calls, this avoids problems where get_vcall_slot () would get
5974         confused by the native code for the instruction preceeding the call.
5975         (mono_arch_get_vcall_slot): Simplify this.
5976         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5977
5978         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5979         register allocator now seems to depend on them instead of the data in
5980         cpu-<ARCH>.md.
5981
5982         * mini.c (mini_method_compile): Throw the correct type of exception if
5983         mono_method_get_header () fails because of a loading error.
5984
5985 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * mini.c (mini_method_compile): Clear the loader error if the method
5988         header cannot be decoded.
5989
5990         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5991         interface methods on proxies correctly.
5992
5993         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5994         this argument for vtype methods. Add precise liveness info for arguments.
5995
5996         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5997         LIVERANGE_START/END opcodes.
5998
5999         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6000         for arguments and values in registers.
6001
6002 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6005         return a valuetype. Fixes #487518.
6006
6007         * iltests.il: Add a test.
6008         
6009         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6010
6011         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6012         closed over a null reference correctly.
6013
6014 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6017
6018 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6019
6020         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6021         allocated to the same registers as fixed sregs.
6022
6023 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6024
6025         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6026         ATOMIC_CAS_IMM ops.
6027
6028         * method-to-ir.c: Handle more cases for
6029         Interlocked.CompareExchange.
6030
6031         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6032         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6033         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6034
6035 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * aot-runtime.c (decode_method_ref): Fix a warning.
6038
6039         * unwind.c (mono_unwind_frame): Ditto.  
6040
6041 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6044         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6045
6046         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6047         fix the handling of large values in the ALU_PC_G0_NC relocation.
6048
6049 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6052
6053 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6054
6055         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6056         ops.
6057
6058 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6059
6060         * method-to-ir.c: MINI_OP3 needs a comma.
6061
6062         * method-to-ir.c, mini.h, mini.c: Remove
6063         mono_init_op_sreg_counts ().
6064
6065 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6068         OP_JMP.
6069         
6070         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6071         assertion.
6072
6073         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6074
6075         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6076         code somewhat.
6077
6078 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6079
6080         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6081         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6082         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6083         operations.
6084
6085 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * driver.c: Change location of gc_wrapper.h.
6088
6089         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6090         inside finally clauses correctly. Fixes #485721.
6091
6092         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6093         after the change above.
6094
6095         * exceptions.cs: Add a test.
6096         
6097 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6100
6101         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6102         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6103         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6104
6105         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6106         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6107
6108 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6109
6110         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6111         Simplify logic for ensure_method_is_allowed_to_call_method. 
6112         Handle wrappers on callers.
6113
6114 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6117         them don't run yet.
6118
6119         * basic-simd.cs: Fix the names of some test methods.
6120
6121 2009-03-18  Geoff Norton  <gnorton@novell.com>
6122
6123         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6124
6125 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6128
6129 2009-03-17  Jb Evain  <jbevain@novell.com>
6130
6131         * driver.c: remove now uneeded call to mono_gc_base_init before
6132         mono_profiler_load.
6133
6134 2009-03-17  Jb Evain  <jbevain@novell.com>
6135
6136         * dwarfwriter.c (token_handler): handle more cases.
6137
6138 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6139
6140         * method-to-ir.c: Remove more dead code (that was required only
6141         because of method_is_safe). Fix compiler warnings.
6142
6143 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6144
6145         * method-to-ir.c: Remove unneeded/useless method_is_safe
6146         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6147
6148 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6149
6150         * mini.c (mini_method_compile): Print the method been compiled with
6151         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6152         for people not familiar with the runtime.
6153
6154 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6157         a managed object which is later put into a GList. Return its class instead.
6158
6159         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6160         stack slots when using sgen.
6161
6162 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6165
6166 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6167
6168         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6169         > so it works on the first vreg as well.
6170
6171 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6174         trigger randomly.
6175
6176         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6177         
6178         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6179         implement GArray.
6180
6181 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6184         native->IL offset mapping.
6185
6186 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6189
6190         * basic.cs: Add a test.
6191
6192 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6193
6194         * mini-x86.c (mono_arch_output_basic_block): Use different
6195         registers in case the ones we want to overwrite are used by the
6196         other operand.  Fixes regression in #480807.
6197
6198 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6201
6202         * dwarfwriter.c (emit_line_number_info): The line number info for
6203         IL code was off by one. Fix that.
6204
6205         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6206         stack.
6207
6208 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6209
6210         Contributed under the terms of the MIT/X11 license by Steven
6211         Munroe <munroesj@us.ibm.com>.
6212
6213         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6214         Fixes #483462.
6215
6216 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6217
6218         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6219         as well.
6220
6221 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6222
6223         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6224         the delegate ctor handling code. Fixes #482638.
6225         
6226         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6227         #481458.
6228
6229         * iltests.il.in: Add a test.
6230         
6231         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6232         mini-posix.c.
6233
6234 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6235
6236         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6237         is shared generic code, return the trampoline, even if the method
6238         has already been compiled.  Fixes #479763.
6239
6240         * mini.c, mini.h: New function
6241         mono_jit_find_compiled_method_with_jit_info() which is the same as
6242         mono_jit_find_compiled_method() but also returns the jit info.
6243
6244 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6245
6246         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6247         for methods which actually have one.  For all other methods, make
6248         sure the this argument var is live the whole method.
6249
6250         * mini.c (mini_method_compile): Every shared method has a
6251         this/vtable/mrgctx info.  Fixes #480807.
6252
6253 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6254
6255         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6256         generic/imt thunks where some entries branch through the vtable,
6257         while other entries branch directly.
6258
6259 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6260
6261         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6262
6263         * mini-windows.c: Ditto.
6264         
6265         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6266         ctors.
6267
6268 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6269
6270         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6271         down an assert.
6272
6273 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6274
6275         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6276         #481403.
6277
6278 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6279
6280         * exceptions-x86.c: Include debug-mini.h - fixes build.
6281
6282 2009-03-04  Martin Baulig  <martin@ximian.com>
6283
6284         * debug-mini.c: Clean up the exception API and add documentation.
6285         (mono_debugger_handle_exception): New public method; this is
6286         called when throwing an exception or encountering an unhandled one.
6287         (mono_debugger_call_exception_handler): Formerly known as
6288         mono_debugger_handle_exception(); this is used to tell the
6289         debugger that we're about to invoke an exception handler.
6290
6291 2009-03-04  Martin Baulig  <martin@ximian.com>
6292
6293         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6294         ../metadata/mono-debug-debugger.c; save and reset exception state.
6295
6296 2009-03-02  Martin Baulig  <martin@ximian.com>
6297
6298         * debug-mini.c: Moved the debugger exception handling here from
6299         ../metadata/mono-debug-debugger.c.
6300
6301         * debug-mini.h
6302         (MonoDebuggerExceptionAction): New exception typedef.
6303
6304         * debug-mini.c
6305         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6306
6307         * exceptions-amd64.c
6308         (mono_amd64_throw_exception): Use the new debugger exception
6309         handling code.
6310
6311         * mini-exceptions.c
6312         (mono_handle_exception_internal): Don't call
6313         mono_debugger_unhandled_exception() here.
6314
6315 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * mini.c aot-compiler.c: Update after the changes to 
6318         mono_marshal_get_runtime_invoke ().
6319
6320         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6321         Virtual generic methods might not have method->slot set, work around
6322         that.
6323
6324         * generics.cs: Add a test.
6325
6326 2009-03-02  Geoff Norton  <gnorton@novell.com>
6327
6328         * mini.c:
6329         * driver.c: Allow signal chaining of SIGFPE as well.
6330
6331 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6332
6333         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6334         this since it now receives the method not its generic context in the
6335         IMT reg.
6336
6337         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6338         generic/imt thunks where some entries branch through the vtable, while
6339         other entries branch directly.
6340
6341         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6342
6343         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6344         support for interface methods as well.
6345
6346         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6347         using the normal IMT thunks.
6348
6349         generics.cs: Add new tests.
6350         
6351         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6352         the generic inst to the generic imt thunks. This fixes AOT support, 
6353         improves consistency with the normal IMT thunks, and makes it easier to
6354         add support for interface generic virtual methods later.
6355
6356         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6357         
6358 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6359
6360         * driver.c (mono_set_signal_chaining): New public API function to enable
6361         signal chaining on POSIX platforms.
6362
6363         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6364         (si@lindenlab.com) to implement signal chaining. The original patch was
6365         contributed under the MIT X/11 license:
6366         https://bugzilla.novell.com/show_bug.cgi?id=318894
6367
6368 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6369
6370         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6371         too until it can be made to run on amd64.
6372
6373 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6376         to  get_generic_context_from_code () + get_call_info () if possible.
6377
6378 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6379
6380         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6381         suspend-on-sigsegv functionality.
6382
6383         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6384         to suspend when a native SIGSEGV is received. This is useful for debugging
6385         crashes which don't happen under gdb, since a live process contains more
6386         information than a core file.
6387
6388         * mini-exceptions.c (mono_print_thread_dump): Use 
6389         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6390
6391         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6392
6393         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6394         
6395         * basic-float.cs: Disable the tests which currently fail on amd64.
6396
6397         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6398         value to mono_arch_patch_callsite () to fix crashes.
6399         
6400         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6401
6402 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6405         nop code by patching the call address to point to the nullified class init
6406         trampoline, as the former does not seem to be safe on SMP machines.
6407
6408 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6409
6410         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6411         they were wrong.
6412
6413 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * basic-float.cs basic-calls.cs: Fix warnings.
6416
6417 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6418
6419         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6420         correct frame pointer in the LMF.  Should fix #478394.
6421
6422 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6423
6424         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6425
6426         * image-writer.c: Make the binary writer less verbose.
6427
6428 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6429
6430         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6431         are called from runtime invoke wrappers.
6432
6433 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6434
6435         * cpu-ppc.md (store_memindex): Increase the size of this.
6436
6437 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6440
6441         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6442
6443         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6444         OP_LCONV_TO_R_UN.
6445
6446         Last fix for of #467201.
6447
6448
6449 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6452
6453         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6454         and long_conv_to_r8_2:
6455
6456         Fixed part of #467201.
6457
6458 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6459
6460         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6461
6462         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6463         conversion to 32 bits.
6464
6465         * cpu-x86.md: Increase the size of int_conv_to_r4.
6466
6467         * basic-float.cs: Add a test for this.
6468
6469         Fixed part of #467201.
6470
6471 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6472
6473         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6474
6475         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6476         conversion to 64 bits.
6477
6478         * basic-float.cs: Add a test for this.
6479
6480         Fixed part of #467201.
6481
6482 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6483
6484         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6485
6486         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6487         This behavior is compatible with MS.
6488
6489         * iltest.il.in: Add a test for this.
6490
6491         Fixed part of #467201.
6492
6493 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6496
6497         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6498         change the precision of the value.
6499
6500         * cpu-x86.md: Define len for float_conv_to_r4.
6501
6502         * basic-float.cs: Add a test for this.
6503
6504         Fixed part of #467201.
6505
6506 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6507
6508         * mini.c: Adjust locking order to the new semantics where the loader lock
6509         comes first.
6510
6511 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         * aot-runtime.c:
6514         * mini-amd64.c:
6515         * mini-arm.c:
6516         * mini-ia64.c:
6517         * mini-mips.c:
6518         * mini-ppc.c:
6519         * mini-sparc.c:
6520         * mini-trampolines.c:
6521         * mini-x86.c:
6522         * mini.c:
6523         * tramp-alpha.c:
6524         * tramp-amd64.c:
6525         * tramp-arm.c:
6526         * tramp-hppa.c:
6527         * tramp-ia64.c:
6528         * tramp-mips.c:
6529         * tramp-ppc.c:
6530         * tramp-s390.c:
6531         * tramp-s390x.c:
6532         * tramp-sparc.c:
6533         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6534
6535 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6538         as it is incorrect.
6539
6540 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6543         for cctors if needed.
6544
6545 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6546
6547         * mini-ppc.c: Fix build on Darwin.
6548
6549 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6552         version instead of 3 as valgrind doesn't like version 3.
6553
6554         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6555
6556         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6557         usable for hashing methods.
6558         (emit_extra_methods): Use the new hash to avoid putting every method in the
6559         same hash bucket.
6560
6561         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6562
6563         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6564         whenever a method ref could match a method.
6565         
6566         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6567         test to fail.
6568         
6569         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6570         methods refs.
6571
6572         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6573
6574         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6575         the encoding buffer.
6576
6577         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6578         mono_method_get_header () on inflated methods as an optimization.
6579
6580 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * ssa.c (fold_ins): Fix another crash if the instruction following the
6583         switch was optimized away.
6584
6585 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6586
6587         Contributed under the terms of the MIT/X11 license by Steven
6588         Munroe <munroesj@us.ibm.com>.
6589
6590         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6591
6592 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6595         around the mono_domain_alloc calls, it is now done by the functions
6596         themselves.
6597
6598         * aot-compiler.c (compile_method): Only add wrappers referenced by
6599         the method if compiling with full AOT.
6600         (mono_compile_assembly): Error out if --aot=full is specified on
6601         a platform where it is not supported.
6602
6603         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6604         on ARM too.
6605
6606         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6607         AOT support.
6608
6609         * aot-runtime.c (load_named_code): Handle 
6610         mono_arm_throw_exception_by_token.
6611
6612         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6613
6614         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6615         unaligned.
6616
6617         * Makefile.am (fullaotcheck): Exit if a test fails.
6618
6619         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6620         on ARM.
6621         (mono_compile_assembly): Handle the assembler failing.
6622
6623         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6624         accepting subsections of .bss.
6625
6626         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6627         was optimized away.
6628
6629         * aot-compiler.c: Remove some unused includes.
6630         
6631         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6632         now in MonoImageWriter.
6633
6634         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6635         code sequence which matches a non-virtual call. Fixes #472654.
6636
6637 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6640         xdebug code.
6641         
6642         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6643         use the image/dwarf writers directly.
6644
6645         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6646         field.
6647
6648         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6649         MonoDwarfWriter.
6650
6651         * image-writer.h: Fix some typos.
6652
6653         * dwarfwriter.h dwarfwriter.c: New files.
6654         
6655         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6656         separate module.
6657
6658         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6659         argument to return unwind info.
6660
6661         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6662
6663         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6664         
6665         * aot-runtime.c (decode_method_ref): Add a case for 
6666         MONO_AOT_METHODREF_WRAPPER_NAME.
6667
6668         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6669         for AOT.
6670
6671         * aot-compiler.c (encode_method_ref): Use the new constants.
6672
6673         * aot-runtime.c (decode_method_ref): Ditto.
6674
6675         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6676         be compiled, not the icall itself.
6677
6678 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6679
6680         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6681         using decode_method_ref ().
6682
6683         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6684         convert it to an in32. Fixes #475859.
6685
6686         * arrays.cs: Add a test.
6687
6688 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6691         OP_LCONV_TO_U2.
6692
6693         * basic-long.cs: Add a test.
6694
6695 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6696
6697         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6698         remove the frame pointer in leaf methods which don't receive any
6699         arguments, don't throw exceptions and don't do dynamic stack
6700         allocations.
6701
6702 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6705         the fail_tramp changes. Hopefully fixes #475132.
6706
6707 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6710         instead of mono_metadata_signature_dup_full.
6711
6712 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6715         for processing jump tables. Fixes #473787.
6716
6717 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6718
6719         * mini-generic-sharing.c: mini_method_get_context() just calls
6720         mono_method_get_context_general() now.
6721
6722         * mini.c, mini.h: Moved get_object_generic_inst(),
6723         construct_object_context_for_method() and
6724         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6725
6726 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6727
6728         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6729         basic block fell through to its successor bblock without a branch. Fixes
6730         #474718.
6731
6732         * iltests.il.in: Add a test.
6733         
6734         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6735         (can_encode_patch): We can now handle arrays of generic parameters and
6736         array methods.
6737
6738         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6739
6740         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6741         the AOT file to avoid some #ifdefs in aot-runtime.c
6742
6743         * mini.h: Bump AOT file format version.
6744
6745 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * Makefile.am (fullaotcheck): Make this run the tests.
6748
6749         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6750
6751 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6752
6753         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6754         individually.  Fixes #473482.
6755
6756 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6759
6760 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6761
6762         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6763         (mono_compile_assembly): Hush compile warnings about
6764         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6765         code path.
6766
6767 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6768
6769         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6770
6771         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6772
6773         * aot-compiler.c: Fix arm support.
6774
6775         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6776         img_writer_emit_unset_mode () function.
6777
6778         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6779         (mono_unwind_get_dwarf_pc_reg): Ditto.
6780
6781         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6782         Move almost all platform specific code to a set of arch_ functions, 
6783         and document them to ease porting.
6784         
6785         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6786
6787         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6788
6789         * aot-compiler.c: Extract the image writing functionality into a separate
6790         module to reduce the size of this file.
6791
6792 2009-02-09  Geoff Norton  <gnorton@novell.com>
6793
6794         * mini-s390.c: Fix the signature of emit_sig_cookie.
6795
6796 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6799
6800         * aot-runtime.c (is_shared_got_patch): Ditto.
6801
6802         * aot-runtime.c (load_named_code): Cope with the fact that 
6803         decode_got_entry () won't decode the patch fully if its corresponding got
6804         entry is already filled.
6805         
6806         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6807         Initialize *ji.
6808         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6809
6810         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6811         as the moving pointer instead of 'buf' for consistency with the rest of the
6812         codebase.
6813         (mono_arch_create_monitor_exit_trampoline): Ditto.
6814
6815         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6816         generic_class_init trampolines.
6817         (add_generic_class): Extract some code from add_generic_instances () into a
6818         separate function so it can be called from other places too.
6819         (compile_method): Call add_generic_class () for the classes of inflated methods
6820         referenced by the method.
6821         (can_encode_patch): Allow references to generic parameters.
6822
6823         * aot-runtime.c: Add support the patches required by the new trampolines.
6824         
6825         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6826         support.
6827
6828         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6829         full-aot support.
6830
6831         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6832         this from get_throw_pending_exception, make the signature full aot compatible.
6833
6834         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6835
6836         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6837
6838         * exceptions.cs: Add a test.
6839
6840 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6841
6842         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6843         use the DWARF_DATA_ALIGN constant instead.
6844
6845         * exception-<ARCH>.c: Update after the above change.
6846
6847         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6848         dwarf unwinder.
6849
6850         * mini-arm.c: Enable the dwarf unwinder.
6851
6852         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6853         instead of mono_class_setup_vtable ().
6854
6855 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6856
6857         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6858         dwarf unwinder.
6859
6860         * mini-x86.h: Enable the dwarf unwinder.
6861
6862 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6863
6864         Fix mcs/tests/test-7.cs
6865         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6866         2009-02-03.
6867
6868 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * mini.c (print_jit_stats): Remove some unused statistics.
6871
6872 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6875
6876 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6877
6878         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6879         the method we get from mono_object_get_virtual_method() because
6880         that function does it properly, now.
6881
6882 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6885         opcodes. Fixes #472775.
6886
6887 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6888
6889         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6890         fact that mono_find_jit_info() sometimes returns the context
6891         corresponding to the jit info in new_ctx.  Fixes #472600.
6892
6893 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6894
6895         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6896         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6897         klass->enum_basetype directly.
6898
6899         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6900         enum subtypes.
6901
6902         * unwind.c: Avoid 0 sized arrays.
6903
6904 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6905
6906         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6907         size on systems with 64k pages. Fixes #471389.
6908
6909 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6910
6911         Contributed under the terms of the MIT/X11 license by Steven
6912         Munroe <munroesj@us.ibm.com>.
6913
6914         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6915         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6916         necessary.
6917
6918 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6919
6920         Contributed under the terms of the MIT/X11 license by Steven
6921         Munroe <munroesj@us.ibm.com>.
6922
6923         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6924         comparison fix.
6925
6926         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6927         The trampoline can be longer on PPC64.
6928
6929 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6930
6931         Contributed under the terms of the MIT/X11 license by Steven
6932         Munroe <munroesj@us.ibm.com>.
6933
6934         * mini-ppc.c: Compiler warning fixes and trivial code
6935         simplifications.
6936
6937 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6940         ins->dreg which could be a hardware register, not a vreg.
6941
6942         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6943         
6944         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6945         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6946
6947         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6948         
6949         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6950         ->dreg, that is not the vreg we are looking for.
6951
6952         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6953
6954         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6955         LIVERANGE_END.
6956
6957         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6958         strange crashes.
6959
6960 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6963
6964         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6965         the line diff is 0.
6966
6967         * aot-compiler.c: Add xdebug support on x86.
6968
6969         * unwind.c: Add x86 support.
6970         
6971         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6972         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6973
6974         * mini.c (mini_method_compile): Ditto.
6975         
6976         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6977         the variable index.
6978
6979         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6980         which mimic .push_section/.pop_section in GAS.
6981         
6982         * aot-compiler.c: Emit precise live range information for variables.
6983
6984         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6985
6986         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6987         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6988         them.
6989
6990         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6991         the live ranges of variables.
6992
6993         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6994         of the variable in terms of native offsets.
6995
6996 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6997
6998         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6999         
7000 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7001
7002         Contributed under the terms of the MIT/X11 license by Steven
7003         Munroe <munroesj@us.ibm.com>.
7004
7005         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7006         order (offset then base reg) for ppc_load_multiple_regs.
7007         (emit_save_saved_regs) Correct operand order for
7008         ppc_store_multiple_regs.
7009         (mono_arch_get_call_filter): Correct operand order for
7010         ppc_load_multiple_regs.
7011
7012         * mini-ppc.c (emit_memcpy): Fix operand order for
7013         ppc_load_reg_update and ppc_store_reg_update.
7014         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7015         (mono_arch_emit_epilog): Correct operand order for
7016         ppc_load_multiple_regs.
7017
7018         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7019         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7020
7021 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7022
7023         * cpu-ppc64.md: Fixed storer4_memindex length.
7024
7025 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7028         line number info.
7029         
7030         * aot-compiler.c (emit_line_number_info): Optimize this.
7031
7032 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7035         
7036         * aot-compiler.c: Add debug info for methods without debug info by
7037         emitting an IL file and having the line number info referencing that file.
7038
7039         * aot-compiler.c: Optimize the size of the generated line number info.
7040
7041         * aot-compiler.c: Emit line number info in xdebug mode.
7042
7043         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7044         million arguments.
7045
7046 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7049
7050         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7051         is used.
7052
7053 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7054
7055         * basic-calls.cs: Test for the weird crash found on arm.
7056         
7057 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7058
7059         * cpu-arm.md: Increase the size of storer8_membase_reg and
7060         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7061
7062         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7063         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7064         reg to LR otherwise we'll be loading/storing from just the offset.
7065
7066 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7067
7068         Question: if we are storing gint32's inside the "*native_offset",
7069         should we change the signature to "gint32 *native_offset" to
7070         ensure that we do not have type definition problems?
7071         
7072         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7073         an int * as this is what the other function expects, causes
7074         problems with Freescale's compiler that defined int32_t to be a
7075         long and makes int incompatible 
7076
7077 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7078
7079         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7080         filename conflict with bjam.
7081
7082 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7083
7084         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7085         as it might use decomposed ops.
7086
7087 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7088
7089         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7090
7091         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7092         is defined.
7093
7094         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7095
7096         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7097         offsets.
7098
7099         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7100         way registers are stored in MonoContext on arm.
7101
7102         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7103         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7104
7105         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7106
7107         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7108
7109         * mini.c (mini_init): Register mono_isfinite.
7110
7111         * jit-icalls.c (mono_isfinite): New jit icall.
7112
7113         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7114         
7115         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7116         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7117         the parent frame.
7118
7119 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7120
7121         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7122         separate frame and stack pointers, so we must use FP to find the register
7123         spill area.
7124         The FP reg is retrieved from the MonoContext::regs array.
7125
7126 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7129         as FPA requires it.
7130
7131 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7132
7133         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7134         return R4 and R8 when not running under softfloat.
7135
7136         Fixes basic-calls.exe
7137
7138 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7139
7140         * mini-arm.c: Implement some overflow opcodes.
7141
7142 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7143
7144         * ssa.c: handle another alloca.h
7145
7146         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7147         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7148         MONO_ARCH_USE_SIGACTION. 
7149
7150         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7151         capability defines.
7152
7153         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7154
7155         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7156         PPC targets as sigaction does not exist on all platforms, define
7157         this on a per-platform basis.
7158
7159         Instead of erroring out if the platform is not defined, include
7160         mini-ppc-os.h, and expect that the OS specific setting provides
7161         the required information.   
7162
7163 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7164
7165         * aot-compiler.c: Fix --enable-minimal=aot.
7166
7167 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7168
7169         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7170         previous change.
7171
7172 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * exceptions-arm.c: Fix warnings.
7175
7176         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7177         ARM.
7178
7179         * mini-x86.c: Fix --enable-minimal=jit build.
7180
7181         * mini.c: Really fix --enable-minimal=jit build.
7182         
7183         * mini.c (construct_object_context_for_method): Move this outside
7184         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7185
7186         "Backported" of r124984 from 2.0 branch.
7187         
7188         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7189
7190         "Backport" of r124977 + r124978 from 2.0 branch.
7191         
7192         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7193         to avoid calling mono_exception_from_token () from the throw trampoline.
7194         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7195         for throwing corlib exceptions, this fixes full-aot support for corlib
7196         exceptions.
7197
7198         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7199
7200 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7201
7202         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7203         part of the changes to split the code in mini into operating
7204         system specific files.
7205
7206         This patch was done by copying mini.c to the respective files to
7207         preserve SVN history.
7208
7209 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7210
7211         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7212
7213 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7216         remoting-invoke-with-check wrappers of shared methods.
7217
7218         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7219
7220 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7221
7222         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7223         optimization if the top of stack is the last instruction in the
7224         bblock.  Otherwise it might have been used after its definition.
7225         Fixes #469742.
7226
7227 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7230         method as well when get_vcall_slot () fails to match a code sequence.
7231
7232         * mini-arm.c: Fix the android build, which doesn't have
7233         __aeabi_read_tp.
7234
7235 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7238         the s390x build.
7239
7240 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7243
7244 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7245
7246         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7247         and put its id into jinfo->used_regs. This is only used on amd64,
7248         which is currently the only platform generating unwind info.
7249
7250         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7251         the dwarf unwinder. This is required to correctly handle async exceptions
7252         like thread abort and stack overflows, which can happen while a method
7253         is in the middle of its prolog or epilog.
7254         
7255         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7256         the unwind info belonging to an AOTed method.
7257
7258         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7259         into cfg->unwind_ops.
7260         
7261         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7262
7263         * mini.c (mini_init): Call mono_unwind_init ().
7264         (mini_cleanup): Call mono_unwind_cleanup ().
7265
7266         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7267         unwind info to be shared between methods.
7268
7269         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7270         saved in the LMF.
7271
7272         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7273         get_throw_pending_exception () to avoid initialization races.
7274
7275         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7276         mono_arch_exceptions_init () function.
7277
7278         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7279
7280 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * mini.c (mono_get_domain_intrinsic): New helper function.
7283         (mono_get_thread_intrinsic): Ditto.
7284
7285         * mini-arm.c mini-ia64.c: Use the new helper functions.
7286         
7287         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7288         the last constrained_call change, since it is needed in the non-AOT
7289         case as well.
7290
7291         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7292         
7293         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7294         mono_get_lmf_addr () on arm eabi linux.
7295
7296 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7299         code sequence which matches a non-virtual call.
7300
7301 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7302
7303         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7304         stack pointer (r1).
7305
7306 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7307
7308         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7309         runtime-invoke wrappers, since they are also shared based on signature.
7310
7311 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7312
7313         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7314         info from the (correct) context.
7315
7316 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7317
7318         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7319         
7320         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7321         using dwarf unwinding info. Not yet used.
7322
7323         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7324
7325 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7326
7327         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7328         descriptors.
7329
7330         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7331         special case and handle mono_arch_delegate_invoke_impl() returning
7332         function descriptors.
7333
7334         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7335         trampolines return function descriptors, too.
7336
7337 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7340         out_of_line optimization.
7341
7342 2009-01-21  Martin Baulig  <martin@ximian.com>
7343
7344         * mini.h
7345         (MonoCompile): Added `disable_deadce_vars' to disable removing
7346         unused variables.
7347
7348         * mini.c
7349         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7350         inside the debugger.
7351
7352         * liveness.c (mono_analyze_liveness): Don't remove any unused
7353         variables if `cfg->disable_deadce_vars' is set.
7354
7355 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7356
7357         * method-to-ir.c: Only apply exception constructor optimization if
7358         the the method actually belongs to an exception class.  Fixes
7359         #467456.
7360
7361 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7362
7363         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7364         change inside a #ifdef __mono_ppc64__.
7365
7366         * aot-compiler.c (compile_method): Remove the previous limitation.
7367
7368         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7369         on type variables in AOTed code.
7370         
7371         * aot-compiler.c (compile_method): Skip generic methods having type 
7372         constraints on their generic parameters.
7373
7374         * aot-compiler.c (compile_method): Check for methods which cannot be
7375         encoded inside RGCTX_FETCH patches as well.
7376
7377         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7378         build.
7379
7380 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7381
7382         * method-to-ir.c: Force the vtable variable in shared generic code
7383         for the case that they might show up on a stack trace where they
7384         are needed.
7385
7386         * mini-exceptions.c: Save and use generic sharing info as well as
7387         IP in stack traces to resolve shared generic instantiations.
7388
7389 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7392         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7393
7394 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7395
7396         * method-to-ir.c: Do generic sharing for array constructors.
7397
7398 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * mini-exceptions.c (mono_print_thread_dump): Add information
7401         about the thread state using wapi_current_thread_desc.
7402
7403 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7404
7405         * basic-simd.cs: Tests for the new constructors. 
7406
7407 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * mini-ops.h: Added OP_EXPAND_*
7410
7411         * cpu-x86.md: Same.
7412
7413         * mini-x86.c (mono_arch_output_basic_block): Same.
7414         
7415         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7416
7417 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * iltests.il.in: Add a test for #467385.
7420
7421 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7422
7423         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7424         thread been cleaned up is not the same currently in execution.
7425
7426         Fixes appdomain-unload crashes on windows, osx and linux variants
7427         without the __thread keyword.
7428
7429 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7430
7431         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7432         (koush@koushikdutta.com). Implement this for android.
7433
7434         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7435         begins with a digit.
7436
7437         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7438         mono_marshal_get_write_barrier ().
7439
7440 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7443         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7444         that pass them on a register pair.
7445
7446         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7447         test was crashing due to that.
7448
7449 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7450
7451         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7452         trampoline code. Include ucontext.h only if available.
7453
7454 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7455
7456         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7457         and doesn't check whether it's sharable, like it was before
7458         removing the shared generics hash.  This brings IronPython
7459         performance back to what it was before that change.
7460
7461 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7462
7463         * method-to-ir.c: Handle delegate invocation optimization earlier,
7464         otherwise it would be handled (much more slowly) by the
7465         final/sealed optimization.
7466
7467 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7468
7469         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7470         domain is not set. Fixes #465864.
7471
7472 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7473
7474         * method-to-ir.c: Don't stop sharing of generic methods with catch
7475         clauses - we already handle those.
7476
7477 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7478
7479         * mini.c, mini.h: lookup_generic_method() is now
7480         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7481         making the shared_generics_hash obsolete.
7482
7483 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7484
7485         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7486         use the red zone.  Make room on the stack first and then use it,
7487         not the other way around.
7488
7489 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * mini.c (mini_init): Call mono_xdebug_init ().
7492
7493         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7494
7495 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7498
7499         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7500         trampolines.
7501
7502         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7503         debug+unwind info for trampolines.
7504
7505         * mini.c (mono_create_unwind_op): New helper function.
7506
7507         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7508
7509 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * aot-compiler.c: Fix the build.
7512
7513 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * Makefile.am: Update dtrace-prelink.sh location.
7516
7517 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7518
7519         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7520         optimization. Fixes #464520.
7521
7522 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7523
7524         * mini-amd64.c : Adding code to save/restore non-volatile registers
7525            on Winx64.
7526
7527         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7528           registers on Winx64.
7529
7530         Contributed under MIT/X11 license.
7531
7532 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7535         __GNUC_MINOR__ which can break when the major version changes.
7536
7537 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7538
7539         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7540
7541 2009-01-07  Geoff Norton  <gnorton@novell.com>
7542
7543         * helpers.c:  Allow mono -v -v -v to work on darwin.
7544
7545 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7546
7547         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7548           pattern. 
7549
7550         Contributed under MIT/X11 license.
7551
7552 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7553
7554         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7555         instead of directly accessing type->data.klass. Fixes #462016.
7556         (mono_allocate_stack_slots_full): Ditto.
7557
7558         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7559         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7560
7561         * aot-compiler.c (emit_plt): Fix ARM build.
7562
7563 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7564
7565         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7566         
7567         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7568         change.
7569
7570         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7571         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7572         #463357.
7573
7574         * iltests.il.in: Add a regression test.
7575
7576 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7579
7580 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7581
7582         * basic-simd.cs: Add a regression test for #462457.
7583
7584 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7585
7586         * mini-ops.h: Add a definition of XPHI.
7587
7588         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7589
7590         * ssa.c (op_phi_to_move): Handle XPHI.
7591
7592         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7593
7594         Fixes #462457
7595
7596 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7597
7598         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7599
7600 2008-12-31  Geoff Norton  <gnorton@novell.com>
7601
7602         * mini-ppc.c: The prolog size allocated can be too small for darwin
7603         ppc32 under certain circumstances.  Also fix a small logic bug.
7604
7605 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7606
7607         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7608         while loading AOT methods.
7609
7610         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7611         since only the former is nulled out after a successful cast. This prevents
7612         crashes with rethrown exceptions when using --debug=casts.
7613
7614 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7615
7616         * mini.h: New macro for checking whether a method is final,
7617         i.e. whether the method or its class is marked final.
7618
7619         * method-to-ir.c: Use the new macro for all final-checks
7620         consistently.  Fixes the crash in the System.ServiceModel tests.
7621
7622 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7623
7624         * mini-exceptions.c (get_exception_catch_class): Corrected another
7625         overly strict assertion.
7626
7627 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7628
7629         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7630         Clobbering it is not allowed because the caller might use it as
7631         the vtable register in the interface call.
7632
7633 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7634
7635         * mini-exceptions.c (get_exception_catch_class): Corrected an
7636         overly strict assertion.
7637
7638 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7639         
7640         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7641
7642         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7643
7644         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7645
7646         * cpu-mips.md: correct lengths for certain long_ opcodes.
7647
7648         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7649
7650         * 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().
7651         
7652 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7653
7654         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7655         
7656 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7657         
7658         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7659         
7660 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7663         next basic block.
7664         
7665 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7666
7667         * 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
7668
7669         * 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)
7670         
7671 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7672         
7673         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7674         
7675 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7678         gshared code. Fixes #458947.
7679
7680         * generics.cs: Add a test.
7681
7682 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7683         
7684         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7685         
7686         * mini-mips.c: first pass n32 code generation.
7687
7688         * mini-mips.h: datatypes and defines for n32 support.
7689
7690         * exceptions-mips.c: first pass n32 code generation.
7691         
7692         * tramp-mips.c: first pass n32 code generation.
7693         
7694         * cpu-mips.md: add long_ opcodes.
7695         
7696 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7697
7698         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7699
7700         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7701         
7702         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7703         
7704         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7705
7706         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7707
7708         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7709
7710         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7711
7712         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7713
7714         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7715
7716 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7719
7720 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7721
7722         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7723
7724 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7725
7726         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7727         descriptors for helper functions directly in front of the code.
7728
7729 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7730
7731         * method-to-ir.c: Removed an unnecessary assertion.
7732
7733 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * method-to-ir.c: Merge SGEN changes from the old JIT.
7736
7737 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7738
7739         * driver.c (compile_all_methods_thread_main): Handle failure of
7740         mono_get_method ().
7741
7742 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7743
7744         * mini-ppc.c: Merged with mini-ppc64.c.
7745
7746         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7747
7748         * Makefile.am: Use the same sources for PPC and PPC64.
7749
7750         * mini-ppc64.c: Removed.
7751
7752 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7753
7754         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7755         code to mono_bb_is_fall_through.
7756         
7757         * branch-opts.c (mono_remove_critical_edges): Same.
7758
7759 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7760
7761         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7762         expect that an OP_BR_REG will be there.
7763
7764 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7765
7766         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7767         for the many branch ops. The original check miss OP_BR_REG.
7768
7769         Fixes #457574.
7770         
7771 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7772
7773         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7774
7775 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7776
7777         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7778         while holding the aot lock.
7779
7780 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7781
7782         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7783         
7784 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7785
7786         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7787           to release all runtime callable wrappers held by the runtime.
7788
7789         Contributed under MIT/X11 license.
7790
7791 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7792
7793         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7794           for Winx64.
7795
7796         Contributed under MIT/X11 license.
7797
7798 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7801         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7802
7803 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7804
7805         * cpu-mips.md: fix ckfinite length
7806
7807         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7808         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7809         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7810         
7811 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7812
7813         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7814         
7815 2008-12-08  Geoff Norton  <gnorton@novell.com>
7816
7817         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7818         size by 8 bytes as well.
7819
7820 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7821
7822         * basic-simd.cs: Fix method names for Vector16b.
7823         
7824 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7825
7826         * basic-simd.cs: Fix method names for Vector16sb.
7827
7828 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7829
7830         * basic-simd.cs: Fix method names for Vector8us.
7831         
7832 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7833
7834         * basic-simd.cs: Fix method names for Vector8s.
7835         
7836 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7837
7838         * basic-simd.cs: Fix method names for Vector4ui.
7839
7840 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7841
7842         * basic-simd.cs: Fix method names for Vector2l.
7843
7844 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * basic-simd.cs: Fix method names for Vector2d.
7847
7848 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7849
7850         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7851         that are extension methods.
7852
7853 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * basic-simd.cs: Fix method names for Vector4f.
7856
7857 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7858
7859         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7860         as such. Fixes #456669.
7861
7862 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7863
7864         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7865         
7866 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7867
7868         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7869         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7870         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7871         (mips_adjust_stackframe): handle FP spills
7872                 
7873         * mini-ops.h: add mips_mtc1_s2
7874         
7875         * cpu-mips.md: add mips_mtc1_s2
7876         
7877 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7878
7879         * unwind.c: New file, move the unwind info encoding functions here from
7880         aot-compiler.c, so they could be used at runtime too.
7881
7882 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7883
7884         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7885         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7886         
7887 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7888
7889         * mini-mips.c: cleanup warnings
7890         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7891         (mips_adjust_stackframe): handle case of taking the address of stack locals
7892         
7893 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * aot-compiler.c: Implement a few functions missing from the asm writer.
7896         (emit_method_code): Only write symbols for methods when using the bin
7897         writer, since the assembler can't deal with the characters in our method
7898         names.
7899
7900         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7901
7902         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7903         call.
7904
7905         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7906         a bit to also restore %rax.
7907
7908 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7909
7910         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7911
7912 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7915         arguments.
7916
7917 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7918
7919         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7920
7921         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7922         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7923
7924         * exceptions-ppc64.c: Removed.
7925
7926         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7927
7928 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7929
7930         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7931         tramp-ppc64.c.
7932
7933         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7934
7935         * tramp-ppc64.c: Removed.
7936
7937 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7940         the TYPESPEC table.
7941
7942 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7943
7944         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7945
7946         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7947         mini-ppc.h instead of mini-ppc64.h.
7948
7949         * mini-ppc64.h: Removed.
7950
7951 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7952
7953         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7954         
7955         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7956         
7957 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7958
7959         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7960         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7961         code easier.
7962
7963 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7966
7967 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7968
7969         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7970
7971 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7972
7973         * basic-simd.cs: Tests for operator == and != on Vector4f.
7974
7975 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7976
7977         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7978
7979         * simd-intrinsics.c: Kill useless enum.
7980
7981 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7982
7983         * cpu-mips.md: add long_conv_to_ovf_i4_2
7984         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7985
7986 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7987
7988         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7989         
7990         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7991
7992 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7993
7994         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7995         
7996 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         * basic-simd.cs: Add tests for new methods.
7999
8000 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * simd-intrinsics.c: Add support for operator == and !=
8003         on Vector4(u)i.
8004
8005         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8006
8007 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8008
8009         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8010
8011 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8014
8015         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8016         MONO_PATCH_INFO_ICALL_ADDR.
8017
8018         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8019
8020         * aot-compiler.c: Resurrect full-aot support.
8021
8022 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8023
8024         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8025         
8026 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8027
8028         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8029         
8030 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8031
8032         * basic-simd.cs: Fix tests to work under ppc.
8033         Remove tests for methods that will be removed.
8034
8035 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8036
8037         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8038         generic type (via a typedef or typeref) correctly.
8039
8040 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8043         diagnose an assertion failure.
8044
8045 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8046
8047         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8048         Fix trampoline size.
8049
8050         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8051         conversion opcodes are implemented natively instead via emulation.
8052
8053 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8054
8055         * cpu-mips.md: remove mips_xori
8056
8057         * mini-ops.h:  remove mips_xori
8058
8059         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8060
8061         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8062         
8063         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8064         
8065 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8066
8067         * cpu-mips.md: fix instruction lengths.
8068
8069         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8070
8071         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8072
8073         * mini-ops.h: fix slti / sltiu op profiles.
8074         
8075 2008-12-02  Martin Baulig  <martin@ximian.com>
8076
8077         * method-to-ir.c (mono_method_to_ir): Disable debugging
8078         information for the init locals block to make the debugger stop
8079         after all locals have been initalized.
8080
8081 2008-12-02  Martin Baulig  <martin@ximian.com>
8082
8083         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8084         running inside the debugger.
8085
8086 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8087
8088         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8089         is enabled.
8090
8091         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8092         alu->alu imm optimization which only shows if deadce is disabled.
8093
8094         * aot-compiler.c: Rename the function names for the binary and asm writers
8095         so they can coexist in the same process. Rework the xdebug code to use the
8096         asm writer. This avoids the need to call into the runtime to dump the
8097         debugging info. Add more debugging info for types.
8098
8099         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8100
8101         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8102         cpu description tables, they can't occur in cpu-<ARCH>.md.
8103
8104         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8105         the stack in CEE_LDFLDA. Fixes #450542.
8106
8107         * generics.cs: Add a new test.
8108
8109 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8110
8111         * mini-ops.h: updated MIPS opcodes
8112         * mini-mips.c: decompose long opts
8113         * mini-mips.h: decompose long opts
8114         
8115 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8116
8117         * cpu-mips.md: fix length on int_rem_un
8118         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8119         
8120 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8123
8124         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8125
8126 2008-11-29  Martin Baulig  <martin@ximian.com>
8127
8128         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8129         mono_debug_using_mono_debugger() in addition to the
8130         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8131
8132 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8133
8134         * mini-ops.h: updated more MIPS opcodes
8135         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8136         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8137         
8138 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8139
8140         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8141
8142 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8143
8144         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8145         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8146         * mini-ops.h: correct selected mips opcode entries
8147         
8148 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8149
8150         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8151         make them work.
8152
8153 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8154
8155         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8156
8157 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8158
8159         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8160         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8161         * mini-mips.h: disable IMT
8162         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8163         
8164 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8165
8166         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8167
8168 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8169
8170         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8171
8172 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8173
8174         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8175         consistency.
8176
8177 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8178
8179         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8180         for Set/GetVector aligned versions.
8181
8182 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8183
8184         * basic-simd.cs: Add tests for Get/SetVector.
8185
8186 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8187
8188         * mini.c: Removed g_slist_append_mempool().  Now in
8189         metadata/mempool.c.
8190
8191 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8194         size properly and make the bounds check optional.
8195
8196         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8197         for SetVector and IsAligned.
8198
8199 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8200
8201         * mini.c: Remove unused mono_normalize_opcodes () function.
8202
8203 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8204
8205         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8206         using the new atomic add ops now.
8207
8208         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8209         add.
8210
8211 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8212
8213         * mini-ppc64.c: Several fixes.
8214
8215 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8216
8217         * cpu-mips.md: added jump_table
8218         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8219
8220 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8221
8222         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8223
8224 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8225
8226         * mini-ops.h: corrected a handful of MIPS opcodes.
8227
8228 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8229
8230         * aot-compiler.c: MIPS to use ELF writer
8231
8232 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8233
8234         * mini-codegen.c: remove MIPS specific assert.
8235
8236 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8237
8238         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8239         fixes.  PPC64 now passes most of the runtime regressions.
8240
8241 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8242
8243         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8244         volatile intervals a bit.
8245
8246 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8247
8248         * basic-long.cs: New test case.
8249
8250 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8251
8252         * mini.c (mini_method_compile): Disable globalra for large methods for 
8253         now.
8254
8255         * regalloc2.c (order_moves): Add fp support.
8256
8257         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8258         source bblock ends with an OP_BR_REG.
8259
8260         * ratests.cs: Add a new test.
8261
8262 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8263
8264         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8265         sharing.  PPC64 now passes generics.exe.
8266
8267 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8268
8269         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8270
8271 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8272
8273         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8274         memory when mono_jit_info_table_find () can't find the method in the
8275         LMF case.
8276
8277         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8278         AOTed code too.
8279         
8280         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8281         writer too.
8282
8283 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8284
8285         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8286         Several fixes.  PPC64 now runs exceptions.exe and
8287         devirtualization.exe.
8288
8289 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8290
8291         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8292         arrays.exe and basic-math.exe.
8293
8294 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8295
8296         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8297         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8298
8299 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8300
8301         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8302
8303 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8304
8305         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8306
8307         * ir-emit.h: Move macros from method-to-ir.c to here.
8308
8309 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8310
8311         * mini-ops.h: Correct the long simd ops to use LREG.
8312
8313 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8314
8315         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8316         
8317         * mini-ops.h: Correct the dreg type of a few long opcodes.
8318
8319         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8320         Add netbsd support.
8321
8322 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8323
8324         * mini-ppc.c: remove negative stack references in epilog
8325         for platforms that don't support the red zone.
8326
8327 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8328
8329         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8330         point regs.  Now PPC64 passes basic-calls.exe.
8331
8332 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * basic-simd.cs: Add tests for accessors of Vector2l.
8335
8336 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8337
8338         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8339
8340         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8341         
8342         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8343
8344 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8345
8346         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8347         PPC64 passes basic-long.exe.
8348
8349 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8350
8351         * decompose.c: Decompose carry and overflow add on PPC64 like on
8352         other 64 bit archs.  Don't decompose sub at all on PPC64.
8353
8354         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8355         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8356         basic-long.exe.
8357
8358 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8359
8360         * basic-simd.cs: Add tests for accessors of Vector2d.
8361
8362 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8363
8364         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8365
8366         * cpu-x86.md: Same.
8367
8368         * mini-x86.c (mono_arch_output_basic_block): Same.
8369         
8370         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8371
8372 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8373
8374         * basic-simd.cs: Add tests for accessors of Vector4f.
8375
8376 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8377
8378         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8379
8380         * cpu-x86.md: Same.
8381
8382         * mini-x86.c (mono_arch_output_basic_block): Same.
8383         
8384         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8385
8386 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8387
8388         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8389
8390 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8391
8392         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8393
8394         * cpu-x86.md: Same.
8395
8396         * mini-x86.c (mono_arch_output_basic_block): Same.
8397         
8398         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8399
8400 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8401
8402         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8403
8404 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8405
8406         * simd-intrinsics.c: Enable setters for Vector16sb.
8407
8408 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8409
8410         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8411
8412         * cpu-x86.md: Same.
8413
8414         * mini-x86.c (mono_arch_output_basic_block): Same.
8415         
8416         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8417
8418 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8419
8420         * simd-intrinsics.c: Implement setter for Vector8us.
8421
8422 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8425         for dead variables.
8426
8427 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8428
8429         * mini-ppc.c: remove references to the red zone in the prolog
8430         (for systems that don't support it).
8431
8432 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8433
8434         * cpu-ppc64.md: Fixed a few instruction lengths.
8435
8436         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8437         now.
8438
8439 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8440
8441         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8442         basic.exe now.
8443
8444 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8445
8446         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8447
8448 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8449
8450         * mini-ops.h: Added OP_INSERT_I2.
8451
8452         * cpu-x86.md: Same.
8453
8454         * mini-x86.c (mono_arch_output_basic_block): Same.
8455         
8456         * simd-intrinsics.c: Implement setter for Vector8s.
8457
8458         * simd-methods.h: Add the names of get setters of Vector8s.
8459
8460 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8463         
8464         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8465         parameters.
8466
8467         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8468
8469 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8470
8471         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8472         for PPC64.  An empty program runs now.
8473
8474 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8477
8478         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8479         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8480         info for JITted code is emitted into a shared library, loadable into gdb.
8481
8482 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8483
8484         * Makefile.am: Changes to build PPC64.
8485
8486         * mini-arch.h: Include mini-ppc64.h on PPC64.
8487
8488 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8491         in PPC code up to r119147.
8492
8493 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8494
8495         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8496         cpu-ppc64.md: Changes for PPC64.
8497
8498         Based on code submitted by andreas.faerber@web.de at
8499         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8500         X11/MIT license.
8501
8502 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8503
8504         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8505         cpu-ppc64.md: Copied from the corresponding PPC files from
8506         r118846.
8507
8508 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8509
8510         * mini-ops.h: Added OP_ROUND.
8511
8512         * cpu-x86.md: Added round.
8513
8514         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8515
8516         * basic-math.cs: Added test_0_round to test rounding.
8517
8518         Contributed under MIT/X11 license.
8519
8520 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8521
8522         * aot-compiler.c : Fix the Winx64 build.
8523
8524         Contributed under MIT/X11 license.
8525
8526 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8527
8528         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8529         in OP_EXTRACT_R8 to avoid possible stack corruption.
8530
8531 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8532
8533         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8534
8535         * cpu-x86.md: Added extract_r8.
8536
8537         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8538         
8539         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8540         a couple of OP_EXTRACT_I4.
8541
8542         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8543
8544         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8545
8546 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8547
8548         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8549         and not 4.1. 
8550
8551 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8552
8553         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8554         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8555
8556         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8557         are not needed any more.
8558
8559         * mini.h: Remove the unused INS_LIST macros.
8560
8561         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8562         longer needed.
8563
8564         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8565         ir-emit.h.
8566
8567         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8568         mono_alloc_ireg () instead.
8569
8570         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8571         macros.
8572
8573         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8574         on amd64.
8575
8576         * aot-runtime.c (load_aot_module): Disable AOT when running under
8577         CAS.
8578
8579         * mini-amd64.h: Change the monitor fastpath defines to check for
8580         !PLATFORM_WIN32 so they work on *bsd too.
8581
8582         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8583
8584         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8585
8586         * mini.h (MonoCompile): Remove new_ir flag.
8587
8588         * regalloc.h regalloc.c: Remove unused code.
8589
8590         * cpu-*.md: Remove more unused opcodes.
8591
8592         * simple-cee-ops.h simple-mini-ops.h: Removed.
8593
8594         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8595         
8596 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8597
8598         * aliasing.h: Removed.
8599
8600         * *.c: Remove references to aliasing.h and inssel.h.
8601
8602         * mini.c: Remove additional unused functions.
8603
8604         * mini-ops.h cpu-*.md: Remove unused opcodes.
8605
8606 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8607
8608         Remove the old JIT code.
8609
8610         * inssel*.brg: Removed.
8611
8612         * ssa.c abcremoval.c aliasing.c: Removed.
8613
8614         * ssa2.c: Renamed to ssa.c.
8615
8616         * abcremoval2.c: Renamed to abcremoval.c.
8617
8618         * *.c: Removed all !cfg->new_ir code.
8619
8620         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8621         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8622
8623         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8624         
8625 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8628         to simplify the code and cut back on the number of global symbols in the AOT
8629         file.
8630         
8631         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8632
8633 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8634
8635         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8636         with the got/got_info tables.
8637
8638         * mini.h: Bump AOT file format version.
8639         
8640         * unwind.h: New file, contains definitions for stack unwinding.
8641
8642         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8643         to cfg->unwind_ops.
8644         
8645         * aot-compiler.c: Generalize the emitting of unwind information to use the
8646         information in cfg->unwind_ops.
8647
8648         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8649
8650         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8651         AOT method frames. Enable writing symbols for methods by default.
8652
8653 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8654
8655         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8656         and make it work with vectors of element sizes 1, 2 and 4.
8657
8658         * simd-intrinsics.c: Enable getter for all vectors with element size
8659         1, 2 or 4.
8660
8661         * simd-methods.h: Add the names of other getters.
8662
8663         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8664
8665         * cpu-x86.md: Same.
8666
8667         * mini-x86.c: Same.
8668
8669 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8670
8671         * mini-ppc.h: portability fix.
8672
8673 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8674
8675         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8676         buggy and will overwrite it.
8677
8678 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8679
8680         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8681         Use it to emit local symbols for all methods so AOTed methods show up with
8682         their full name in gdb/valgrind output.
8683
8684 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8685
8686         * mini-ppc.c: portability fixes.
8687
8688 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8691         entries out of the if (!generic_shared...) code so it is always done.
8692         (mono_class_init_trampoline): Do the patching when running under valgrind
8693         too, newer versions of valgrind have no problems with it.
8694
8695 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8696
8697         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8698         further sections.
8699
8700 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8701
8702         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8703         filters.
8704
8705 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8706
8707         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8708
8709 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8712
8713         * cpu-x86.md: Same.
8714
8715         * mini-x86.c: Same.
8716
8717         * simd-intrinsics.c: Same.
8718
8719 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8720
8721         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8722
8723 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8724
8725         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8726         to work with more Vector types.
8727
8728 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8729
8730         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8731         store the elemens directly instead of using and intermediate.
8732
8733 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8736
8737         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8738         to preserve %eax for aot plt trampolines.
8739
8740         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8741         (encode_method_ref): Flag synchronized methods so they won't go through
8742         the AOT trampoline.
8743
8744         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8745         wrappers.
8746
8747         * cpu-ia64.md (jmp): Increase max length.
8748
8749 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8752         open generic classes.
8753
8754         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8755
8756         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8757         box+brtrue optimization since it causes test failures on x86.
8758
8759 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8760
8761         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8762
8763         * cpu-x86.md: Same.
8764
8765         * mini-x86.c: Same.
8766
8767         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8768         for simd ctor values. 
8769
8770         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8771         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8772
8773 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8774
8775         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8776         LogicalRightShift.
8777
8778         * simd-instrincs.c: Same.
8779
8780         * basic-simd.cs: Same.
8781
8782 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8783
8784         * ratests.cs: Add more tests.
8785
8786         * regalloc2.c (add_spill_code): Handle more corner cases.
8787
8788 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8791         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8792         both the source an destination of an instruction.
8793
8794 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8795
8796         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8797         wapihandles.c: more portability changes.
8798
8799 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8800
8801         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8802         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8803         safe to execute in a signal handler and the kernel provides better
8804         the info in /proc/self/smaps. Avoid the assert on sigaction during
8805         cleanup.
8806
8807 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8810         do the bblock linking hack if it is actually needed.
8811
8812         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8813         up linking.
8814
8815         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8816         crash problem is fixed.
8817
8818         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8819         bblocks.
8820
8821         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8822         for catch clauses.
8823         (mini_method_compile): Set the starting value of next_vreg to 
8824         MAX_IREGS + MAX_FREGS when using globalra.
8825
8826         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8827         filter clauses with BB_EXCEPTION_HANDLER.
8828
8829         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8830
8831 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8832
8833         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8834         space for stdcall.  Fixes regressions on Win32.
8835
8836 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8839         bblocks.
8840         (linear_scan): Remove an assert which doesn't seem to be needed.
8841
8842         * local-propagation.c (mono_local_deadce): Avoid a call to
8843         MONO_DELETE_INS which would screw up the instruction linking.
8844
8845         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8846
8847         * regalloc2.c: Upgrade to work the current JIT code.
8848
8849 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8850
8851         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8852         case.
8853
8854         * aot-runtime.c: Remove some dead code.
8855
8856         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8857         consistency.
8858         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8859
8860         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8861         trampolines using sscanf since atoi doesn't work on large unsigned values.
8862
8863         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8864         Initialize code_size.
8865
8866 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8867
8868         * method-to-ir.c (mini_emit_inst_for_method): Make
8869         Interlocked.CompareExchange work for Int arguments on 32 bit
8870         archs, as well.
8871
8872 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8873
8874         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8875
8876 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8877
8878         * main.c Fix MSVC build.
8879
8880         Contributed under MIT/X11 license.
8881
8882 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8883
8884         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8885         alignment larger than 8 bytes are aligned correctly, too.
8886
8887         * mini.c: Honor the min_align field of MonoClass when laying out
8888         the stack.
8889
8890 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8891
8892         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8893
8894         * aot-compiler.c (emit_plt): Fix a warning.
8895         
8896         * aot-compiler.c: Implement ARM support in the binary writer.
8897
8898 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8899
8900         * basic-simd.cs: Add test for getter with byref arg.
8901         Fix the naming of a few tests.
8902         Add missing checks to a test.
8903
8904 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8907
8908         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8909         most of the full-aot support for monitor enter/exit trampolines.
8910
8911         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8912         enter/exit trampoline creation functions.
8913
8914         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8915         make dist.
8916
8917 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8918
8919         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8920         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8921         implement the needed functionality without adding crap to the runtime.
8922
8923 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8926         non-x86 builds.
8927
8928         * mini.c (mono_build_date): New global version holding the build date in
8929         string format.
8930         
8931         * Makefile.am (buildver.c): Generate a file containing the build date.
8932
8933         * main.c: Set the build date from the generated file.
8934
8935         * mini.c (mono_get_runtime_build_info): New helper function returning build
8936         information in a string format.
8937         
8938         * driver.c (mono_main): Print the build date in --version.
8939
8940         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8941         file when the bind-to-runtime-version option is used.
8942
8943 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8944
8945         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8946
8947 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8948
8949         * simd-methods.h: Rename prefetch methods.
8950
8951         * simd-intrinsics.c: Same.      
8952
8953 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8954
8955         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8956         sizes.
8957
8958 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8959
8960         * aot-compiler.c: Use the bundled elf header files instead of depending on
8961         the system one.
8962         
8963         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8964         mempool.
8965
8966         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8967         on every call.
8968
8969 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8970
8971         * cpu-x86.md: Add store nta ops.
8972
8973         * mini-ops.h: Same.
8974
8975         * mini-x86.c: Same.
8976
8977         * mini.h: Add an enum for simd prefetch modes.
8978
8979         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8980         of store. Use the changed code to support store nta.
8981
8982         * simd-intrinsics.c: Add prefetch ops for all vector types.
8983
8984 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8985
8986         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8987         threads.
8988         
8989         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8990         names.
8991
8992         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8993         trampolines.
8994
8995 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8996
8997         * mini-x86.c: Fixed commit.
8998
8999 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9002
9003 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9004
9005         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9006         and MONITOR_EXIT, for the ASM fastpaths.
9007
9008         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9009         available.
9010
9011         * mini.c, patch-info.h: Signature and patch infos for
9012         Monitor.Enter/Exit trampolines.
9013
9014         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9015
9016         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9017         Monitor.Enter/Exit ASM fastpath for Linux.
9018
9019 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9022
9023         * objects.cs: Add a new test.
9024         
9025         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9026
9027         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9028         if MONO_LOG_LEVEL is set.
9029
9030         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9031
9032         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9033
9034         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9035         
9036         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9037         of file offsets. Align the sections belonging to the data segment to 
9038         PAGESIZE.
9039
9040 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9041
9042         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9043         elf.h. Port it to amd64.
9044
9045 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9046
9047         * driver.c: Enable SIMD by default.
9048
9049 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9050
9051         * cpu-x86.md: Add prefetch op.
9052
9053         * mini-ops.h: Same.
9054
9055         * mini-x86.c: Same.
9056
9057         * mini.h: Add an enum for simd prefetch modes.
9058
9059         * simd-methods.h: Add prefetch function names.
9060
9061         * simd-intrinsics.c: Add prefetch ops for all vector types.
9062
9063 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * aot-compiler.c (emit_bytes): Speed this up a little.
9066
9067 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * aot-compiler.c: Add JIT time etc. statistics.
9070         
9071         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9072
9073         * mini.h (MonoCompile): Add 'got_offset' field.
9074
9075         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9076         method_got_offsets array.
9077
9078         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9079         wrappers.
9080
9081         * aot-compiler.c (compile_method): Add generic method instances referenced
9082         by the method to the list of methods to be compiled, this is required so if
9083         A<T> references B<T>, and another assembly references A<int>, then it will
9084         also get a copy of B<int>.
9085
9086         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9087         when checking for monitor enter/exit.
9088
9089 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9090
9091         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9092         for Monitor.Enter and Monitor.Exit if enabled.
9093
9094         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9095         Solaris.
9096
9097 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9098
9099         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9100         of an OP_MOVE. Fixes #440046.
9101
9102         * basic-long.cs: Add a new test.
9103
9104 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * mini.h: Add synchronization note for the managed counter-part.
9107
9108         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9109         returns the simd caps of the current cpu.
9110
9111 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9112
9113         * basic-simd.cs: Remove Console.WriteLine.
9114
9115 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * basic-simd.cs: New tests for Vector2ul.
9118
9119 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9120
9121         * simd-intrinsics.c: Add new vector type Vector2ul.
9122
9123 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * basic-simd.cs: New tests for Vector2l.
9126
9127 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9128
9129         * cpu-x86.md: Add long version of most packed int ops.
9130
9131         * mini-ops.h: Same.
9132
9133         * mini-x86.h: Same.
9134
9135         * simd-intrinsics.c: Add new vector type Vector2l.
9136
9137 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9138
9139         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9140
9141         * simd-methods.h: Remove SN_op_BitwiseXor.
9142
9143 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9146         alignment.
9147
9148 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9149
9150         * basic-simd.cs: Test for Vector2d.
9151
9152         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9153         value.
9154
9155 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9156
9157         * cpu-x86.md: Add double version of all packed float ops.
9158
9159         * mini-ops.h: Same.
9160
9161         * mini-x86.h: Same.
9162
9163         * simd-intrinsics.c: Add new vector type Vector2d.
9164
9165         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9166
9167         * simd-methods.h: Add Duplicate.
9168
9169 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9170
9171         * basic-simd.cs: Test for packing with signed saturation.
9172
9173 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9174
9175         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9176         found in the TYPESPEC table.
9177
9178 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9179
9180         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9181         too.
9182
9183         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9184
9185         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9186         instead of the RVA, since the RVA can be changed by tools like the cil 
9187         stripper.
9188
9189         * method-to-ir.c (mono_method_to_ir2): Ditto.
9190
9191         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9192         (deserialize_variable): Ditto.
9193
9194 2008-10-25  Martin Baulig  <martin@ximian.com>
9195
9196         * debug-mini.c (write_variable): Use
9197         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9198
9199 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9200
9201         * cpu-x86.md: Add unsigned variants of packd and packw.
9202
9203         * mini-ops.h: Same.
9204
9205         * mini-x86.h: Emit the right instruction for packd and packw.
9206         Add unsigned variants of packd and packw.
9207
9208         * simd-intrinsics.c: Packd and packw were used in place of their
9209         unsigned variants. Change that.
9210         Add intrinsics for (Signed)PackWithSignedSaturation.
9211
9212         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9213
9214 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9215
9216         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9217
9218 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9219
9220         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9221
9222         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9223
9224         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9225         sse instructions.
9226
9227         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9228
9229 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9230
9231         * method-to-ir.c, mini.c: Special casing for the synchronized
9232         wrapper for the ldtoken+GetTypeFromHandle case.
9233
9234 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9237
9238         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9239         created/split bblocks.
9240
9241 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * mini-ops.h: Add packed signed mul high.
9244         
9245         * cpu-x86.md: Same.
9246
9247         * mini-x86.c (mono_arch_output_basic_block): Same.
9248
9249         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9250
9251         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9252
9253 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9254
9255         * basic-simd.cs: Tests for Vector16sb.
9256
9257 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9258
9259         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9260
9261 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9262
9263         * mini-ops.h: Add packed signed min, max and compare greater.
9264         
9265         * cpu-x86.md: Same.
9266
9267         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9268         saturation.
9269
9270         * simd-methods.h: Add CompareGreaterThan.
9271
9272         * simd-methods.h: Remove CompareEquals.
9273
9274         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9275
9276         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9277
9278         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9279         CompareEqual.
9280
9281 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * basic-simd.cs: Fix tests due to change in the API.
9284
9285 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9288
9289 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9290
9291         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9292
9293         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9294         inst_offset as this has invalid values for LDADDR.
9295
9296 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9297
9298         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9299
9300         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9301
9302 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9303
9304         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9305         for accessing field->data.
9306
9307 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9308
9309         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9310
9311 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9312
9313         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9314
9315         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9316
9317 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9320         from the cfg mempool.
9321
9322 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * basic-simd.cs: Tests for new methods in Vector8us.
9325
9326 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * mini-ops.h: Add multiply and store high.
9329         
9330         * cpu-x86.md: Same.
9331
9332         * mini-x86.c (mono_arch_output_basic_block): Same.
9333
9334         * simd-methods.h: Same.
9335
9336         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9337         and CompareEqual.
9338
9339 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9342         mono_class_setup_vtable ().
9343
9344         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9345         mono_class_get_vtable_entry () for accessing klass->vtable.
9346
9347         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9348
9349         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9350         found.
9351
9352         * method-to-ir.c (mono_save_token_info): Don't save references made from
9353         wrappers.
9354
9355         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9356         of generic instances.
9357
9358         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9359
9360 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9361
9362         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9363         OP_JMP depends on the method signature.  Calculate it properly.
9364
9365 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9366         
9367         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9368         called directly.
9369
9370         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9371         instances.
9372         (emit_extra_methods): Add another table mapping method indexes to 
9373         offsets in the extra_method_info table.
9374
9375         * mini.h: Bump AOT file format version.
9376         
9377         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9378         and mono_aot_get_method_from_token () into one function.
9379
9380 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9381
9382         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9383         separate counter.
9384
9385 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9386
9387         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9388         methods.
9389
9390         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9391         disable_aot.
9392
9393         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9394
9395         * mini.h: Bump aot file format version.
9396
9397         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9398         AOT file can contain native code for methods which are not in the METHOD
9399         table. Generate code for non-sharable generic instances of generic methods
9400         found in the METHODSPEC table.
9401         
9402         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9403         encoding generic type handles.
9404
9405         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9406         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9407
9408         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9409         macros + MONO_ADD_INS.
9410
9411         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9412         context as well.
9413
9414         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9415
9416         * mini.h: Bump aot file format version.
9417
9418         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9419
9420 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9421
9422         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9423         platforms, with definable stack alignment value.  Set to 16 now
9424         for all platforms.
9425
9426         * mini.c, mini.h, driver.c: Command line option for disabling
9427         stack alignment.
9428
9429 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9430
9431         * basic-simd.cs: Tests for new methods in Vector4ui.
9432
9433 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9434
9435         * mini-ops.h: Add packed int shuffle.
9436         
9437         * cpu-x86.md: Same.
9438
9439         * mini-x86.c (mono_arch_output_basic_block): Same.
9440
9441         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9442         extract mask, max, min, shuffle.
9443
9444         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9445
9446 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9447
9448         * basic-simd.cs: Tests for new methods in Vector8us.
9449
9450 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9451
9452         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9453         RuntimeTypeHandle, not a TypedReference.
9454
9455 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9456
9457         * simd-intrinsics.c: remove relocations.
9458
9459 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9460
9461         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9462         optimizations from the x86 backend.
9463
9464 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9465
9466         * simd-methods.h, simd-intrinsics.c: debloat method names and
9467         prepare for no relocations.
9468
9469 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9472         
9473         * cpu-x86.md: Same.
9474
9475         * mini-x86.c (mono_arch_output_basic_block): Same.
9476
9477         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9478         extract mask, max, min and sum of absolute differences.
9479
9480         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9481         method name.
9482
9483 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9484
9485         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9486         Renamed one test for consistency.
9487
9488 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9489
9490         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9491         fix to the code that deal with other blocks.
9492
9493 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9494
9495         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9496
9497 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9498
9499         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9500         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9501         able to process the source reg.
9502
9503 2008-10-16  Martin Baulig  <martin@ximian.com>
9504
9505         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9506
9507         * inssel.brg: Add `OP_HARD_NOP'.
9508
9509         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9510
9511         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9512         `OP_HARD_NOP' instruction when running inside the debugger.
9513
9514         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9515         `OP_HARD_NOP' instruction when running inside the debugger.
9516
9517 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9518
9519         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9520         now works. The issue with the regalloc tripping up no longer
9521         happens.
9522
9523         * simd-intrinsics.c (load_simd_vreg): Same.
9524
9525 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9526         
9527         * basic-simd.cs: Tests for new Vector8ui methods.
9528
9529 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9530
9531         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9532         only for type. This fixes crashes where MonoInst::klass is checked
9533         for ops of type != VTYPE or OBJ.
9534
9535         * simd-intrinsics.c (load_simd_vreg): Same.
9536
9537 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * mini-ops.h: Add ops for packed shuffle/max/avg and
9540         extract mask.
9541         
9542         * cpu-x86.md: Same.
9543
9544         * mini-x86.c (mono_arch_output_basic_block): Same.
9545
9546         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9547         extract mask.
9548
9549         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9550         to emit extract mask op.
9551
9552         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9553         to emit word shuffles.
9554
9555 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9556
9557         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9558         the largest alignment needed by a variable, but at least
9559         sizeof(gpointer).
9560
9561 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9562
9563         * basic-simd.cs: Tests for the fixes in the last commit.
9564
9565 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9568         no longer handles STACK_PTR input.
9569
9570         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9571
9572         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9573         get_simd_vreg   but handles STACK_PTR input.
9574
9575         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9576         as the input can be an arbitrary pointer.
9577
9578         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9579         LDADDR local optimization directly otherwise use a store op.
9580
9581 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9582
9583         * basic-simd.cs: Tests for dup low and dup high.
9584
9585 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9586
9587         * mini-ops.h: Add dup low and dup high ops.
9588         
9589         * cpu-x86.md: Same.
9590
9591         * mini-x86.c (mono_arch_output_basic_block): Same.
9592
9593         * simd-intrinsics.c (vector4f_intrinsics): Same.
9594
9595 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9596
9597         * basic-simd.cs: Tests for recently added functionality.
9598
9599 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9600
9601         * mini-ops.h: Add remaining sse1 fp ops.
9602         
9603         * cpu-x86.md: Add remaining sse1 fp ops.
9604
9605         * mini-x86.c (mono_arch_output_basic_block): Same.
9606
9607         * mini.h: Add enum for simd FP compare conditions.
9608
9609         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9610
9611         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9612         so the backed can generate the appropriate op.
9613
9614 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9615         This patch squeese one more byte from the SimdIntrinsc struct.
9616
9617         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9618         a a shift amount intead of simply or'ing it.
9619
9620         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9621
9622         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9623         byte so we can have an aditional flags field without increasing struct size.
9624
9625         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9626         against the simd_supported_versions bitmask.
9627
9628         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9629
9630 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9631
9632         * mini.c: remove rawbuffer code (the only use here is unsafe because
9633         it takes locks during signal handling and the kernel now provides much
9634         better info in proc/pid/smaps these days).
9635
9636 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9637
9638         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9639         OP_X86_PUSH_OBJ. Fixes #434620.
9640
9641         * objects.cs: Add a test.
9642         
9643 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9644
9645         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9646         that the packuswb/packusdw don't work with unsigned numbers for what
9647         would be negative numbers in signed format.
9648
9649         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9650         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9651
9652         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9653
9654         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9655
9656         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9657
9658         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9659
9660         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9661         add more ops.
9662
9663         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9664         version as the enum in mini.h.
9665
9666         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9667         for sse3 ops, check the simd_version field if present. This way the code
9668         works with all versions of sse.
9669
9670 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9671
9672         * simd-intrinsics.c: Fixed intrinsic name typo.
9673
9674         * mini.h: Added missing simd exported function.
9675
9676         * basic-simd.cs: Added tests for Vector4ui.
9677         Fixed broken test for Vector16b.
9678
9679 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9680
9681         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9682         the max length to 64.
9683
9684 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9685
9686         * method-to-ir.c: Only do the fast virtual generic method call for
9687         non-wrapper methods.
9688
9689         * mini.h, mini-trampolines.c: The new generic virtual remoting
9690         trampoline handles virtual method calls via the vtable (as done by
9691         the fast virtual generic method calls) to remoting proxies.
9692
9693         * mini.c (mono_jit_create_remoting_trampoline): For generic
9694         methods reate a generic virtual remoting trampoline.
9695
9696         * mini-amd64.h: Enable fast virtual generic method calls again.
9697
9698 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9699
9700         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9701         restore registers when doing tail calls.
9702
9703 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9704
9705         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9706         Vector4ui.
9707
9708 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9709
9710         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9711
9712 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9713
9714         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9715
9716 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9717
9718         * basic-simd.cs: Retrofit for API changes.
9719
9720 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9721
9722         * mini-ppc.c: Handle integer stack arguments for tail calls.
9723
9724 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9725
9726         * optflags-def.h: Removed sse3 optimization.
9727
9728         * driver.c: Same.
9729
9730         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9731         sse3.
9732
9733         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9734
9735         * mini.h: Added enumeration with simd versions.
9736
9737         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9738         for detecting SSE3.
9739
9740         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9741
9742         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9743
9744 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9745
9746         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9747
9748         * basic-simd.cs: Fixed test naming.
9749
9750 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9751
9752         * mini-ops.h: Added ops for packed and saturated math, shifts
9753         and packing/unpacking.
9754
9755         * cpu-x86.md: Added descriptors for the above ops.
9756
9757         * mini-x86.c: Added code to emmit the above ops.
9758
9759         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9760
9761 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9762
9763         * aot-compiler.c (compile_method): Enable AOT for generic code.
9764
9765         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9766
9767 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9768
9769         * mini.c: add a workaround for a common screwup that ends up blamed
9770         to mono (other processes blocking signal delivery).
9771
9772 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9773
9774         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9775         in the LDFLD/STFLD opcodes. Fixes #432673.
9776
9777         * iltests.il.in: Add a new test.
9778
9779 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9780
9781         * mini-arm.c: attach the thread in unmanaged->managed transitions
9782         using delegates (bug #433148).
9783
9784 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9785
9786        * basic-simd.cs: Use new ShuffleSel constants.
9787
9788 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9789
9790         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9791
9792         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9793         only disable simd intrinsics if no sse2 is detected.
9794
9795         * optflags-def.h: Added sse3.
9796
9797         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9798         is disabled.
9799
9800 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9801
9802         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9803         when adding delegate-invoke wrappers.
9804
9805 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * Makefile.am: Reenable the simd tests.
9808
9809 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9810
9811         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9812           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9813           other vreg is allocated to that hreg.
9814
9815         Contributed under MIT/X11 license.
9816
9817 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9820         yet checked in.
9821
9822 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9823
9824         * basic-simd.cs: New test suite for SIMD intrinsics.
9825
9826         * Makefile.am: Added new tests.
9827
9828 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9829
9830         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9831
9832         * mini-ops.h: Same.
9833
9834         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9835
9836         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9837         using SSE2 aware opcodes.
9838
9839         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9840         is enabled, this code path is only reachable if conversion ops are emmited after
9841         mono_method_to_ir.
9842
9843         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9844
9845         This optimization saves 6 bytes per conversion against the old version.
9846
9847 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9848
9849         * aot-compiler.c (compile_method): Don't skip methods referencing 
9850         generic methods without a corresponding entry in token_info_hash, since
9851         encode_method_ref () can handle all generic methods now.
9852
9853         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9854         generic context is set.
9855         
9856         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9857         generic sharing of LDTOKEN.
9858
9859 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9860
9861         * mini-amd64.h: Temporarily disabled fast virtual generic method
9862         calls because it breaks the System.Runtime.Remoting tests.
9863
9864 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9867
9868         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9869         so inlining actually works.
9870         (check_inline_caller_method_name_limit): Ditto.
9871
9872 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9873
9874         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9875         64 bit safety (from Olaf Hering and Andreas Farber).
9876
9877 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9878         
9879         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9880         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9881         unused virtual call support code.
9882
9883         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9884         
9885         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9886         which can't use aot trampolines.
9887         (decode_patch): Don't create aot trampolines for methods which can't use
9888         them.
9889
9890         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9891         use aot trampolines.
9892
9893         * mini.h: Bump AOT image format version.
9894         
9895 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9896
9897         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9898         to save_token_info () since cmethod is inflated for constrained calls.
9899
9900         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9901
9902 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9903
9904         * Makefile.am: Add build rules for ppc64.
9905         This avoids the build failing at pedump with unresolved symbols
9906         due to lack of arch_sources. Instead it will now fail earlier
9907         due to lack of cpu-ppc64.md.
9908
9909         Contributed under MIT/X11 license.
9910
9911 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9912
9913         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9914         tail calls.
9915
9916         * iltests.il.in: Add test case for tail call with many arguments.
9917
9918 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9921         to the fast virtual generic method code until the aot case is fixed.
9922
9923 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9924
9925         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9926
9927 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9928
9929         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9930         thunks.
9931
9932 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9933         
9934         * simd-intrinsics.c: Forgot to add this one.
9935
9936         * mini-codegen.c: Fix macro in case SIMD is not supported.
9937
9938 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9939         
9940         This patch land initial JIT support for simd intrinsics.
9941
9942         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9943
9944         * Makefile.am: Added simd-intrinsics.c
9945
9946         * simd-intrinsics.c: New file with simd instrinsic related
9947         code.
9948
9949         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9950
9951         * cpu-x86.md: Add simd related instructions.
9952
9953         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9954
9955         * driver.c: Added two new --regression variants.
9956
9957         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9958
9959         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9960
9961         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9962         extract some complicated logic to helper functions.
9963
9964         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9965
9966         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9967
9968         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9969         the specialized simplification pass.
9970
9971         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9972
9973         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9974
9975         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9976         table.
9977
9978         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9979         if MONO_ARCH_NEED_SIMD_BANK is defined.
9980
9981         * mini-ops.h: Added the new simd ops.
9982
9983         * mini-x86.c: Added mono_arch_xregname.
9984
9985         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9986
9987         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9988
9989         * mini-x86.h: Define simd related MONO_ARCH macros.
9990
9991         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9992
9993         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9994
9995         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9996         MONO_CLASS_IS_SIMD to deal with simd related IR.
9997
9998         * mini.h (MonoInst): Added spill_var to the backend union.
9999
10000         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10001
10002         * mini.h: Added forward declarations of the new simd fuctions.
10003
10004         * optflags-def.h: Added new optimization names SIMD.
10005
10006         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10007
10008         * regalloc.h: Added support for working with 3 register banks.
10009
10010         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10011
10012         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10013
10014 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10015
10016         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10017
10018 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10021         instead of one on 64 bit systems.
10022
10023         * method-to-ir.c: Remove unused includes.
10024
10025 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10028         cfg->used_int_regs, since the two are different on arm.
10029
10030 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10031
10032         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10033         mono_method_get_vtable_index() to get the vtable index.
10034
10035 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10036
10037         * method-to-ir.c (mono_method_to_ir2): Don't create native
10038         wrappers for array methods, because they're never called (and if
10039         they were called they wouldn't work).
10040
10041 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10042
10043         * method-to-ir.c (mono_method_to_ir2): Array methods are
10044         special-cased and must not be invoked indirectly via the (M)RGCTX
10045         when generic sharing is turned on.  Fixes #431413.
10046
10047 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10048
10049         * method-to-ir.c: When generic sharing is active, call
10050         non-interface virtual generic methods via the standard trampoline.
10051
10052         * mini-trampolines.c: Handle virtual generic shared methods.
10053
10054         * mini.h, mini-x86.c, mini-x86.h: New argument for
10055         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10056         method thunks and which is the trampoline to call if the lookup
10057         fails.  Enable the virtual generic method thunk for x86.
10058
10059         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10060         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10061         argument but assert that it's NULL, because these archs don't yet
10062         implement the virtual generic method thunk.  Changes in the IMT
10063         thunk data structures.
10064
10065 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10066
10067         * aot-compiler.c (emit_globals): Avoid invalid characters in
10068         the static linking symbol.
10069
10070         * objects.cs: Add a test for the range check optimization. Fix warnings.
10071
10072         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10073         optimization from the current JIT.
10074
10075         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10076         later in decompose_array_access_opts () to allow more optimizations.
10077
10078         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10079         mono_decompose_soft_float () for consistency.
10080
10081         * mini-ops.h: Fix arguments of OP_STRLEN.
10082
10083         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10084         into a separate function.
10085         (reset_cast_details): Ditto.
10086         (handle_unbox): Save cast details. Fixes #431254.
10087
10088         * method-to-ir.c: Remove some obsolete FIXMEs.
10089
10090 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10091
10092         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10093
10094 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10095
10096         * mini-codegen.c: More work on macros to make them
10097         ready for multiple regbanks.
10098
10099 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10100
10101         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10102
10103         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10104
10105 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10106
10107         * mini-codegen.c (mono_spillvar_offset): Proper support for
10108         multiple regbanks.
10109
10110 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10111
10112         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10113         the stack overflow changes.
10114
10115 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10116
10117         * mini-codegen.c: Make all bank macros depend on reg_bank.
10118
10119         * mini-codegen.c (mono_local_regalloc): Make free mask
10120         initialization regbank aware.
10121
10122 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10123
10124         * mini-codegen.c (mono_local_regalloc): Extract callee
10125         mask selection to a function and make it regbank aware.
10126
10127 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10128
10129         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10130         code to deal with many regbanks.
10131
10132 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * mini-codegen.c: More fp->regbank changes.
10135
10136 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10137
10138         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10139         of a hardcoded constant.
10140
10141 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10142
10143         * method-to-ir.c (type_from_stack_type): Fix typo.
10144
10145 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * mini-ia64.c (emit_move_return_value): Convert float return values to
10148         double.
10149
10150         * objects.cs: Add a new test.
10151         
10152         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10153         VARARG methods to fix an assert later.
10154
10155         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10156         end so it at least compiles.
10157
10158 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10159
10160         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10161
10162 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10163
10164         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10165         optimization to a new function (emit_optimized_ldloca_ir) and enable
10166         it for both ldloca and ldloca_s.
10167
10168 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10169
10170         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10171         gshared CASTCLASS code.
10172
10173         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10174         amd64, where the libc stack unwinder encounters stack frames referring to
10175         native code in unmapped memory.
10176
10177         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10178         sharing.
10179
10180         * generics.cs: Add new test.
10181
10182 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10183
10184         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10185         add a check that one of the ARM_FPU_ constants is defined.
10186
10187         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10188         
10189         * mini-exceptions.c: Fix build on non-altstack platforms.
10190
10191         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10192         sharing of vtypes.
10193
10194         * ir-emit.h: Add a comment to NEW_PCONST.
10195
10196         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10197
10198         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10199
10200         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10201         after the changes to MonoJitDomainInfo.
10202
10203 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10204
10205         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10206
10207 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10208
10209         * mini-ppc.c: Compiler warning fixes.
10210
10211 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10212
10213         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10214         for pinvokes.
10215
10216 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10217
10218         * exceptions-ppc.c, mini-ppc.h: Compile
10219         mono_arch_handle_altstack_exception() on Darwin, too.
10220
10221 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10222
10223         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10224         work on archs which don't have generic sharing implemented, only
10225         without the vtable_arg.
10226
10227 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10228
10229         * mini.c: Added comment explaining why delegate ctor icall
10230         wrappers are compiled.
10231
10232 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10233
10234         * mini.c: Don't produce trampolines to delegate ctor icall
10235         wrappers but compile them upfront.
10236
10237 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10238
10239         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10240         runtime-set function when going back to managed code. Currently this
10241         is used to set back the protection on the soft ovf pages and/or to
10242         throw the stack overflow exception that happened in unmanaged code.
10243
10244 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10245
10246         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10247         runtime-set function when going back to managed code. Currently this
10248         is used to set back the protection on the soft ovf pages and/or to
10249         throw the stack overflow exception that happened in unmanaged code.
10250
10251 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10252
10253         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10254         the support code for restoring stack protection after stack overflows
10255         that happen in unmanaged code. Don't set the exec permission on the
10256         soft overflow area.
10257
10258 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10259
10260         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10261         delegate->method_ptr is set. Fixes #428054.
10262
10263 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * tests.cs: Rename to ratests.cs.
10266
10267         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10268         emit_get_rgctx_... functions.
10269
10270 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10271
10272         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10273
10274 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10275
10276         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10277         before asserting that method is sharable.
10278
10279 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10280
10281         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10282         whether method needs a static RGCTX wrapper used instead of
10283         complex conditions.
10284
10285         * generic-sharing.c, mini.h: A few functions moved to
10286         metadata/generic-sharing.c.
10287
10288 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10289
10290         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10291         Generic code sharing for value types, which essentially means
10292         treating value type methods like static methods.  The RGCTX is
10293         passed in the same way.
10294
10295 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10298         opcode when creating multi-dimensional arrays of open types.
10299
10300         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10301         open generic types.
10302
10303         * generics.cs: Add a test.
10304
10305         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10306
10307 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10308
10309         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10310
10311         * mini.c (mini_method_compile): Set it when running under the debugger. 
10312
10313         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10314         vreg optimization if the flag is set.
10315
10316         * driver.c (mono_main): Add --attach= option to pass options to
10317         the attach agent.
10318
10319         * mini.c (sigquit_signal_handler): Start the attach agent.
10320
10321         * ssapre.c: Disable this to save space since it is not yet ported to
10322         linear IR.
10323
10324         * regalloc2.c: Disable this to save space.
10325
10326         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10327
10328 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10329
10330         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10331         the -v option useful again.
10332
10333 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10336         --break-at-bb.
10337
10338         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10339         arrays of arrays. Fixes #428406.
10340
10341         * method-to-ir.c (mini_emit_castclass): Ditto.
10342
10343         * objects.cs: Add new test.
10344         
10345 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10346
10347         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10348         was wrong at it choked against target_type_is_incompatible for byref types.
10349
10350 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10351
10352         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10353         places.
10354
10355 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10356
10357         * mini-exceptions.c: update a few more exceptions-related counters.
10358
10359 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10360
10361         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10362         new functions to allocate from persistent mempools.
10363
10364 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10367         multiple register banks in the future.
10368
10369         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10370
10371 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10372
10373         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10374
10375         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10376
10377         * mini.h: Export type_to_eval_stack_type.
10378
10379         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10380         is only ins->klass of byref types.
10381
10382 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10385         (mini_emit_memcpy2): Ditto.
10386
10387         * mini-amd64.c: Fix a warning.
10388
10389 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10390
10391         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10392         linking.
10393
10394 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10395
10396         * method-to-ir.c: Extract stloc micro-optimization to a
10397         function and apply it to all cases.
10398
10399 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10400
10401         * method-to-ir.c: Don't fail generic code sharing in cases we
10402         already support.
10403
10404 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10405
10406         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10407
10408 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10409
10410         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10411         implementation.
10412
10413 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10414
10415         * trace.c: make tracing more useful and correct, with per-thread
10416         id and indent info.
10417
10418 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10419
10420         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10421         doing a method call and the argument is an R4.
10422
10423 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10426         generic methods.
10427
10428 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10429
10430         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10431
10432 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10435         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10436
10437 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * driver.c: Add a --agent argument (not supported yet) to load managed
10440         agent assemblies before loading the main assembly, similarly to how the
10441         Java VM handles agents.
10442
10443 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10444
10445         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10446         function to do stack layout of local variables.
10447
10448 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10449
10450         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10451         calculation.
10452
10453 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10456         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10457         JIT if DISABLE_JIT is defined.
10458
10459         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10460         defined.
10461
10462 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10463
10464         * iltests.il.in: Disable the fconv test on PPC (the result is
10465         undefined according to ECMA).
10466
10467 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10468
10469         * iltests.il.in: Enable tail call tests for PPC.
10470
10471         * mini.h: Add variable for storing incoming valuetype argument
10472         addresses for tail calls.
10473
10474         * mini-ppc.c: Implement valuetype arguments and return values for
10475         tailcalls on Linux.
10476
10477 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10478
10479         * mini-ppc.c: Partially implement tail calls (struct arguments and
10480         return values not supported).
10481
10482         * method-to-ir.c: Enable tail calls on PPC.
10483
10484 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10485
10486         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10487         runtime-invoke wrappers to work around the problem of them getting
10488         assigned to a random class.
10489
10490         * aot-runtime.c (mono_aot_get_method): Ditto.
10491         
10492 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10495         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10496
10497 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10498
10499         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10500         until they're implemented properly.
10501
10502         * exceptions-ppc.c: Use arch-independent exception-handling code
10503         instead of custom one.
10504
10505         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10506         for Linear IR.
10507
10508         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10509
10510         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10511         applies when __powerpc__ is defined.
10512
10513 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10514
10515         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10516         methods to their code to avoid computing the full name of wrappers and
10517         doing a lookup in a string hash table.
10518
10519 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10522         we identify bblocks before method_to_ir () is ran.
10523
10524         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10525         Also avoid optimizing branches pointing to themselves.
10526
10527         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10528
10529 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10530
10531         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10532
10533 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10536         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10537         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10538         'buf'.
10539
10540         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10541         jumped to the same entry in plt_jump_table.
10542
10543 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10544
10545         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10546         dynamic images.
10547
10548 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10551         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10552         #421807.
10553
10554 2008-08-29  Geoff Norton  <gnorton@novell.com>
10555
10556         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10557         segment, and doesn't properly handle .space as .text.  Fixes
10558         AOT Mach/ARM
10559
10560 2008-08-29  Geoff Norton  <gnorton@novell.com>
10561
10562         * mini.c: Disable the mach exception handler when running on 
10563         ARM
10564
10565 2008-08-29  Geoff Norton  <gnorton@novell.com>
10566
10567         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10568         globals on Darwin/ARM
10569
10570 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10573         since too many things depend on it. Instead, call 
10574         mono_runtime_set_no_exec ().
10575         
10576         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10577         the new JIT.
10578
10579         * aot-compiler.c: Add an 'asm-only' AOT option.
10580
10581         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10582                 
10583         * aot-compiler.c (compile_method): Disable gshared support for now as it
10584         doesn't yet work.
10585
10586 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10587
10588         * mini-amd64.h : Fix a compiler warning.
10589
10590         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10591           Changed to use a callback function to retrieve the unwind info.
10592           This avoids problems observed when code blocks were removed by
10593           unloading an app domain.
10594
10595         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10596           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10597           to work properly.
10598
10599         Contributed under MIT/X11 license.
10600
10601 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10602
10603         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10604           case to keep the stack aligned to 8.
10605
10606         Contributed under MIT/X11 license.
10607
10608 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10611         avoid repeated linear searches.
10612
10613 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10614
10615         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10616         methods it can't handle.
10617         
10618         * aot-compiler.c (add_method): Avoid adding a method twice.
10619         (add_wrappers): Add runtime invoke wrappers for all methods.
10620
10621         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10622         function to create an aot-compatible version of this trampoline.
10623
10624         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10625
10626 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10627
10628         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10629
10630         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10631         with a generic sharing failure.
10632
10633         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10634
10635         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10636         CEE_RETHROW. Fixes #419634.
10637
10638         * mini.c (mono_method_to_ir): Ditto.
10639
10640         * exceptions.cs: Add a new test.
10641         
10642         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10643         to mono_type_stack_size_internal () since some callers might not pass in
10644         an rgctx.
10645
10646         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10647         instrument_prolog. Fixes #419878.
10648
10649         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10650         doubles in soft float mode volatile.
10651
10652 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10655
10656         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10657         to handle soft float correctly.
10658
10659         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10660         the fast path.
10661
10662         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10663
10664         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10665         to sp, since the generics catch code requires it.
10666
10667         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10668         copying.
10669
10670         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10671         mono_arch_emit_imt_argument ().
10672
10673         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10674
10675         * mini-arm.c tramp-arm.c: Generic sharing updates.
10676
10677 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10678
10679         * mini-arm.c: Fix the arm build.
10680
10681         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10682         handling enums, generic instances and generic sharing.
10683         (mini_type_stack_size_full): Ditto.
10684
10685         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10686         
10687         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10688
10689         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10690
10691         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10692         trampolines.
10693
10694         * mini-arm.c: Various small generic sharing changes.
10695
10696         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10697         this for x86.
10698         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10699         custom code.
10700
10701         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10702         helper function to return a generic class init trampoline.
10703
10704         * method-to-ir.c mini.c: Use it.
10705         
10706         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10707         arch-specfic function to return a generic class init trampoline.
10708
10709         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10710         the GENERIC_CLASS_INIT custom code.
10711
10712         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10713         a fatal error, not a sharing failure.
10714
10715         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10716         needed.
10717
10718         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10719         trampoline argument from MONO_ARCH_VTABLE_REG.
10720
10721         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10722         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10723         argument, and pass the vtable in VTABLE_REG.
10724
10725         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10726         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10727         argument, and pass the vtable in VTABLE_REG.
10728         (mono_arch_create_trampoline_code_full): Remove some special casing for
10729         the rgctx fetch trampoline.
10730
10731         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10732         Fixes #419273.
10733
10734         * iltests.il: Add a test for it.
10735
10736 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10737
10738         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10739
10740         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10741         no longer needed.
10742
10743         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10744         use mono_jit_info_table_find () to avoid recursion.
10745         (mono_delegate_trampoline): Add a sync wrapper here.
10746
10747         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10748         here.
10749
10750         * mini.c (mono_method_to_ir): Ditto.
10751         
10752         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10753         add_sync_wrapper argument. Don't add a sync wrapper here.
10754         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10755
10756         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10757         
10758 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10759
10760         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10761           of nonvolatile registers back from MonoContext to CONTEXT.
10762
10763         Contributed under MIT/X11 license.
10764
10765 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10766
10767         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10768           arguments on Winx64 there are only 4 argument registers.  For this
10769           logic to work the last argument must be pulled from the stack.  
10770
10771         Contributed under MIT/X11 license.
10772
10773 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10774
10775         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10776
10777         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10778         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10779         encode/decode_method_ref ().
10780
10781         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10782
10783         * aot-runtime.c (decode_patch): Ditto.  
10784
10785         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10786         MONO_PATCH_INFO_METHOD.
10787
10788         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10789         MonoGenericJitInfo.
10790
10791         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10792         MonoGenericJitInfo.
10793
10794         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10795
10796         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10797         one from the caller.
10798
10799         * aot-runtime.c (decode_generic_inst): New function to decode and
10800         return a interned generic inst.
10801         (decode_klass_ref): Use it.
10802         (decode_method_ref): Ditto.
10803
10804         * aot-compiler.c (emit_exception_debug_info): Save 
10805         jinfo->has_generic_jit_info too.
10806
10807 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10810
10811         * iltests.il.in: Add a test for fconv_to_i.
10812
10813         * liveness.c: Disable the liveness2 pass for now to save space.
10814
10815         * regalloc2.c: Include mempool-internals.h to fix warnings.
10816
10817         * aot-compiler.c (encode_method_ref): Encode the context of generic
10818         instance methods.
10819
10820         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10821         the context saved in the aot file.
10822
10823         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10824
10825         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10826
10827         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10828         volatile so they won't be optimized away.
10829
10830 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10831
10832         * ssa.c:
10833         * ssa2.c:
10834         * mini.c:
10835         * regalloc2.c:
10836         * dominators.c: Remove duplicated functions that now are in
10837         mempool-internals.h.
10838
10839 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10840
10841         * aot-compiler.c: Fix warnings.
10842
10843         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10844
10845         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10846
10847         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10848         as the patch type.
10849
10850         * mini.c (mono_resolve_patch_target): Ditto.
10851         
10852         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10853         (encode_klass_ref): Add support for encoding VARs/MVARs.
10854
10855         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10856
10857         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10858         the handling of the got entries into a separate 'decode_got_entry' function.
10859         Add support for RGCTX_FETCH.
10860
10861         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10862         clobbered by the trampoline code.
10863
10864         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10865         not clobbered by the indirect calling code.
10866
10867 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10870         to fix the build.
10871
10872 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10873
10874         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10875         signature using the compilation mempool otherwise we would leak it.
10876
10877 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10878
10879         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10880         mono_emit_abs_call ().
10881
10882         * patch-info.h: Add GENERIC_CLASS_INIT.
10883
10884         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10885
10886         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10887         as their target as a near call.
10888
10889         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10890         ABS handling code.
10891         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10892
10893         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10894         call to a runtime function described by a patch.
10895
10896         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10897         mono_emit_abs_call, this has the advantage that the ABS handling code in
10898         mono_codegen () can handle them both, and can handle other stuff in the
10899         future without additional code.
10900
10901         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10902         entry.
10903         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10904         abs addresses.
10905
10906         * mini.h: Add missing bblock related prototypes.
10907
10908         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10909         reverse_inst_list_len fields.
10910
10911         * mini.c: Refactor this file a bit by moving branch optimizations to 
10912         branch-opts.c.
10913
10914         * method-to-ir.c: Merge generic sharing changes missed earlier.
10915
10916         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10917
10918         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10919         shared patches. Process METHODCONST as a shared patch.
10920
10921         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10922         as it crashes on the 2.0 mscorlib.
10923
10924         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10925         to cause crashes.
10926         
10927         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10928         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10929         by IMT.
10930
10931         * aot-compiler.c: Reorganize the got handling code to be a bit more
10932         understandable.
10933
10934 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10935
10936         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10937         mono_patch_info_equals/hash, and use it to massively simplify
10938         get_plt_index ().
10939
10940         * mini.c (mono_patch_info_hash): Simplify this and add support for
10941         more patch types.
10942
10943         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10944
10945         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10946         handling code, since an offset is not enough to identify a trampoline.
10947
10948         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10949
10950 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10951
10952         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10953
10954         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10955
10956         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10957
10958         * decompose.c: PPC decompositions for various ops.
10959
10960         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10961
10962 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10965         call the generic trampoline code using a call, instead of a jump, to
10966         remove some special casing from the generic trampoline code.
10967
10968         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10969         (mono_codegen): Ditto.
10970
10971         * aot-compiler.c aot-runtime.c: Ditto.
10972
10973         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10974
10975         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10976         helper function to find the offset corresponding to a lazy fetch trampoline.
10977
10978         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10979         when doing generic sharing.
10980
10981         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10982         places.
10983         
10984         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10985         mini-trampolines.c to be with the other trampoline creation functions.
10986
10987         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10988         as it is equal to method->signature in most cases, add a 
10989         mono_emit_method_call_full variant which takes a signature and an imt
10990         argument as well.
10991
10992 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10993
10994         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10995         to this function, since it could be computed easily from the method 
10996         argument.
10997         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10998         more.
10999
11000         * method-to-ir.c mini.c: Remove references to 
11001         compile_generic_method_wo_context.
11002
11003         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11004         generic method calls.
11005         
11006         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11007         dimensional non-szarrays.
11008
11009         * mini.c (mini_init): Register mono_array_new_1.
11010
11011         * jit-icalls.c (mono_array_new_1): New jit icall.
11012
11013         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11014         pointing to the method.
11015
11016         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11017         method addresses belonging to METHOD_JUMP patches in the 
11018         jump_target_got_slot_hash.
11019         (mono_aot_load_method): Ditto.
11020
11021         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11022         METHOD_JUMP patches.
11023
11024         * mini.c (mini_create_jit_domain_info): New helper function which 
11025         initializes/frees domain->runtime_info.
11026         (mini_free_jit_domain_info): Ditto.
11027         (mini_init): Install the domain hook functions with the runtime.
11028
11029         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11030         information maintained by the JIT.
11031
11032         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11033         insertion into jump_table_hash into mono_codegen (), also implement proper
11034         locking.
11035
11036         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11037         tail calls, it is already done by the aot code.
11038         
11039         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11040         mechanism on amd64.
11041
11042         * iltests.il.in: Make the jmp test a bit more complex.
11043
11044         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11045         generic instances which doesn't have a token.
11046
11047         * aot-runtime.c (decode_method_ref): Ditto.
11048         
11049         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11050         can handle this case now.
11051         (handle_box): Ditto.
11052
11053 2008-08-15  Geoff Norton  <gnorton@novell.com>
11054
11055         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11056         debugging check.
11057
11058 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11061         calling generic methods.
11062
11063         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11064
11065         * aot-runtime.c (decode_patch_info): Ditto.
11066
11067         * mini.c (mono_resolve_patch_target): Ditto.
11068         
11069         * patch-info.h: Add METHOD_RGCTX.
11070
11071         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11072
11073 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11076         arguments in registers.
11077
11078         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11079         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11080
11081         * mini.c (mini_method_compile): Abort aot compilation for generic
11082         methods if generic sharing is disabled.
11083         
11084         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11085         an mrgctx.
11086
11087         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11088         requiring an mrgctx.
11089
11090         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11091         store instructions when converting a vcall to a normal call.
11092
11093         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11094         mono_arch_find_jit_info.
11095
11096 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11097
11098         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11099         avoid calling mono_method_full_name () for every method even if the
11100         env var is not set.
11101         (check_inline_caller_method_name_limit): Ditto.
11102
11103 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11106         assemblies in one run.
11107
11108         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11109         skipped methods if it is not 0.
11110
11111         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11112
11113 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11114
11115         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11116           MONO_ARCH_HAVE_UNWIND_TABLE.
11117
11118         Contributed under MIT/X11 license.
11119
11120 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11121
11122         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11123           from default optimizaton list on Winx64.
11124
11125         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11126
11127         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11128           the LMF from the MonoJitTlsData structure.
11129
11130         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11131
11132         Contributed under MIT/X11 license.
11133
11134 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * mini.c (sigsegv_signal_handler): Fix the build.
11137
11138         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11139         assembly->aot_module.
11140
11141         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11142         hash table. This simplifies and speeds up a lot of code, and fixes support
11143         for .netmodules.
11144
11145         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11146         with the runtime.
11147
11148         * mini-exceptions.c: Ditto.
11149         
11150         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11151         'native_offset' argument, since these are computed in the 
11152         mono_find_jit_info () function.
11153
11154         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11155         is used by exceptions-ppc.c.
11156
11157         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11158         mono_arch_find_jit_info ().
11159         
11160         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11161         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11162         generic code in mini-exceptions.c.
11163
11164 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11165
11166         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11167
11168         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11169         
11170         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11171         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11172         called while holding the loader lock. Fixes #415608.
11173         (mono_aot_get_method_from_token_inner): Ditto.
11174
11175 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11176
11177         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11178         to reduce differences between this and the generic implementation in
11179         mini-exceptions.c.
11180         (ves_icall_get_frame_info): Ditto.
11181
11182         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11183
11184         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11185         longer neccesarry.
11186
11187         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11188         mono_arch_get_call_filter () and make it non-static, for consistency with the
11189         other architectures.
11190
11191 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11192
11193         * mini.c:
11194         * local-propagation.c:
11195         * mini-x86.c: Correct the name of arch defines.
11196
11197 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11198
11199         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11200         NO_EMULATE_LONG_SHIFT_OPS define.
11201
11202 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11205         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11206
11207         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11208         MACH fixes. Merged from the 2.0 branch.
11209
11210         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11211
11212         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11213         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11214
11215         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11216
11217         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11218         mono_marshal_get_native_wrapper () signature changes.
11219
11220 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11221
11222         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11223         conversion bug under arm.
11224
11225 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11226
11227         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11228
11229         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11230         with overflow checking.
11231
11232 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11233
11234         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11235         to the genmdesc.pl file
11236
11237 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11240         arg_array in the soft-float versions of the LOAD/STORE macros.
11241
11242         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11243         implementation.
11244
11245         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11246
11247 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11250         a float HFA. Fixes #413621.
11251
11252 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11253
11254         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11255         frame_size to args_size. Fixes build.
11256
11257 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11260         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11261
11262         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11263         the stack are not unaligned. Fixes #413247.
11264         
11265 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11266
11267         * mini.c: update jitted methods performance counters.
11268
11269 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11270
11271         * mini-exceptions.c: increase the exceptions thrown performance
11272         counter in mono_handle_exception ().
11273
11274 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11277         can work with netmodules.
11278
11279 2008-07-28  Geoff Norton  <gnorton@novell.com>
11280
11281         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11282         regression tests.
11283
11284 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11285
11286         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11287         correct place.
11288
11289 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11290
11291         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11292           The float param registers and other param registers must be the 
11293           same index on Windows x64.
11294
11295         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11296           ArgValuetypeAddrInIReg argument case.  Setting the argument
11297           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11298
11299         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11300           variable computed above as the copy length for arguments of storage
11301           type ArgValuetypeAddrInIReg.
11302
11303         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11304           ArgValuetypeAddrInIReg argument case.  This case will rely on
11305           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11306
11307         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11308           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11309           jump and tail call instructoins as they do not follow the typical call behavior.
11310
11311         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11312           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11313           local variable and pass the local variable by reference to the called method.
11314
11315         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11316           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11317           of a struct is passed in a register it must be saved with the other
11318           volatile argument on the stack.
11319
11320         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11321           frame pointer the stack adjustment value must be saved to the unwind 
11322           info structure.
11323
11324         Contributed under MIT/X11 license.
11325
11326 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11327
11328         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11329         which got lost in the merge.
11330
11331 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11332
11333         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11334         build.
11335
11336         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11337         
11338         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11339         icalls, since they won't be patched.
11340
11341         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11342         different code sequence when running under valgrind to prevent some valgrind
11343         errors.
11344
11345         * iltests.il.in: Add new regression test.
11346
11347         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11348         end with a throw.
11349
11350         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11351         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11352
11353         * iltests.il.in: Add new test.
11354
11355         * aot-compiler.c: Fix some warnings.
11356
11357         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11358         Fixes #412494.
11359
11360 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11361
11362         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11363         (mini_usage_jitdeveloper): Add a missing --wapi option.
11364
11365 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11366
11367         * mini-codegen.c: Simplify the is_fp macros.
11368         (free_up_ireg): Remove, use free_up_reg instead.
11369         (free_up_reg): Fix the fp case.
11370
11371 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11372
11373         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11374         lowered earlier.
11375
11376         * exceptions-x86.c: Merge some changes which seemed to have got lost
11377         in the linear-ir merge.
11378
11379         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11380
11381         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11382         long vreg volatile even if the variable was already created.
11383
11384         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11385         volatile variables.
11386
11387 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11390
11391         * mini.c (mono_jit_compile_method_inner): Add support for 
11392         MONO_EXCEPTION_BAD_IMAGE.
11393
11394         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11395         mini_method_get_context () returns NULL. Fixes #356531.
11396
11397         * mini.c (mono_method_to_ir): Ditto.
11398         
11399         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11400         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11401
11402 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11403
11404         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11405         in the LDFTN implementation.
11406
11407 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11408
11409         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11410         code, patch calls to icalls, too, even if they're not in the
11411         shared generic code hash.  Fixes #411962.
11412
11413 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11414
11415         * cpu-x86.md: Increase the length of the fcall opcodes.
11416
11417         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11418         calls returning floats.
11419
11420         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11421         on NEWARR.
11422         
11423         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11424         missed earlier.
11425
11426         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11427         into the domain->method_code_hash.
11428
11429         * aot-compiler.c: Fix win32 build.
11430
11431         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11432         
11433         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11434         gshared NEWARR implementation.
11435
11436         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11437
11438         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11439         can be used outside of method_to_ir.
11440
11441         * mini.h (MonoCompile): Add arg_types field.
11442
11443         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11444         
11445         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11446         the values of the local arg_array and param_types array.
11447
11448 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11449
11450         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11451         got accesses might only get generated later when NEWOBJ is decomposed.
11452         
11453         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11454         looking up the native code of the target method when a delegate is called
11455         for the first time.
11456
11457         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11458         optimization.
11459
11460         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11461
11462         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11463         AOT work on platforms without a working dlsym implementation.
11464
11465         * mini.h: Bump AOT image format version.
11466         
11467 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11468
11469         * mini-exceptions.c: Free a MonoType with
11470         mono_metadata_free_type() instead of g_free().
11471
11472         * aot-runtime.c: Free a MonoType.
11473
11474 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11477         optimization.
11478
11479         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11480         fp stack on x86.
11481
11482 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11483         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11484         profiler hook.
11485
11486 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11489         NEWOBJ calls on valuetypes.
11490
11491         * iltests.il.in: Add new test.
11492
11493         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11494
11495 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11496
11497         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11498         is no longer needed.
11499
11500         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11501         non register sized integer arguments.
11502         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11503         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11504         emit_memcpy2 ().
11505
11506         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11507         CEE_MONO_RETOBJ.
11508         
11509         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11510         two a binop with different sized arguments is emitted.
11511
11512         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11513         instruction in the ins==NULL case.
11514
11515 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11516
11517         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11518
11519         * mini-x86.c: Fix osx build.
11520
11521         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11522         opcodes as well.
11523
11524         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11525         instruction for non int sized variables.
11526
11527         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11528         implementation.
11529
11530 2008-07-23  Robert Jordan  <robertj@gmx.net>
11531
11532         * method-to-ir.c: Fix MSVC build.
11533
11534 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11535
11536         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11537         a non int sized type, widen it to an int since newer versions of gcc seem to
11538         generate code which needs this.
11539
11540         * ssa2.c abcremoval2.c: Fix warnings.
11541
11542         * *: Merge the Linear IR branch.
11543
11544         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11545         the ChangeLog file there describes all the changes done over the years. 
11546         Further documentation can be found at www.mono-project.com/Linear_IL.
11547
11548 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11549
11550         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11551           The float param registers and other param registers must be the 
11552           same index on Windows x64.
11553
11554         Contributed under MIT/X11 license.
11555
11556 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11557
11558         * mini.c: Make the previous fix GC safe.
11559
11560 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11561
11562         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11563
11564 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11565
11566         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11567           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11568           ArgValuetypeAddrInIReg instead.
11569
11570         Contributed under MIT/X11 license.
11571
11572 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11573
11574         * mini-codegen.c (get_register_spilling): Fix a warning.
11575
11576 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11577
11578         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11579         for types which the initialization fails. Raises the provided exception
11580         at the right stop after cleanup.
11581
11582 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * aot-compiler.c: Free most of the memory allocated during compilation.
11585
11586         * mini.c (mini_parse_debug_options): Fix a leak.
11587         
11588         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11589         during aot compilation.
11590
11591 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11594         it has too much register pressure.
11595
11596 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11599
11600 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11601
11602         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11603         on x86.
11604
11605         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11606         on amd64 similar to the way it is done on arm.
11607
11608         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11609
11610         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11611         consistency, normalize error messages, avoid loading aot-only modules in
11612         normal mode.
11613
11614         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11615         for consistency.
11616
11617         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11618
11619 2008-07-11  Martin Baulig  <martin@ximian.com>
11620
11621         * debug-debugger.h
11622         (MonoDebuggerInfo): Add `interruption_request'.
11623
11624 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11625
11626         * aot-compiler.c (emit_plt): Remove some dead code.
11627
11628         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11629
11630         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11631         return the plt info offset belonging to a given plt entry.
11632
11633         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11634         mono_aot_get_plt_info_offset.
11635         
11636         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11637         similar to the amd64 code by makeing jumps through a separate jump table 
11638         instead of embedding the jump addresses into the code.
11639
11640 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11641
11642         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11643         method.
11644
11645 2008-07-10  Martin Baulig  <martin@ximian.com>
11646
11647         * mini.c (mini_method_compile): Disable generics sharing when
11648         running in the debugger.
11649
11650 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11653
11654         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11655         the local register allocator from running out of registers on x86 when 
11656         using aot.
11657
11658 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11659
11660         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11661         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11662         C4146.
11663
11664         Contributed under MIT/X11 license.
11665
11666 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11667
11668         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11669         speed up the assembler.
11670
11671 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11672
11673         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11674         support.
11675
11676         * mini.c: Move the soft float handling macros a bit earlier, add 
11677         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11678         place.
11679
11680         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11681
11682         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11683         read-only to help catch code allocation requests.
11684         
11685         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11686         and turn it off when using --aot-only or when compiling with --aot=full.
11687
11688         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11689         jump table for switches from the normal domain mempool, not the code
11690         manager.
11691
11692         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11693         unbox trampoline which handles aot-only mode too.
11694
11695         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11696         an AOTed unbox trampoline.
11697
11698         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11699
11700 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11701
11702         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11703         ""
11704
11705         Contributed under MIT/X11 license.
11706
11707 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11708
11709         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11710           the unwind information for the method at the end of the allocated block.
11711           
11712         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11713           MonoCompileArch to hold the unwind info for SEH on Winx64
11714         
11715         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11716           frame pointer info for the method being compiled.
11717           
11718         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11719           the call to mono_exception_from_token.
11720           
11721         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11722           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11723           information is stored a the end of the method block because it is all 32-bit offset based.
11724
11725         Contributed under MIT/X11 license.
11726
11727 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11730
11731         * wapihandles.c: Fix warnings.
11732
11733         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11734         mode.
11735
11736         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11737         mono_jit_compile_method in aot-only mode since that calls the type 
11738         initializer.
11739         
11740         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11741         get_delegate_invoke_impl in aot-only mode.
11742
11743         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11744
11745 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11746
11747         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11748
11749         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11750         is on by default.
11751
11752         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11753
11754         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11755         init trampoline from the AOT file as well.
11756
11757         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11758         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11759         code.
11760
11761         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11762         mono_init.
11763
11764         * exceptions-amd64.c: Add _full variants for the remaining exception code
11765         creation functions as well, allow emission of relocatable code, remove
11766         caching since that is now done by the caller.
11767
11768         * mini-exceptions.c: Add _full variants for the remaining exception code
11769         creation functions as well, add aot-only support.
11770
11771         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11772         if we can determine a proper token for them.
11773         (add_wrappers): Add a few more wrappers.
11774         (emit_method_code): Remove some dead code.
11775         (emit_trampolines): Emit exception code too.
11776
11777         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11778
11779         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11780         mono_array_new_va which avoids varargs.
11781
11782         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11783
11784         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11785         mono_arch_create_specific_trampoline () in all places.
11786
11787         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11788         a bit so it can be used for other things as well.
11789         
11790         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11791         on demand as well.
11792
11793         * exceptions-amd64.c: Rename the caching from the exception code creation
11794         functions, it is done by the caller instead.
11795         
11796         * exceptions-amd64.c: Change the signature of the exception code creation 
11797         functions to allow the creation of relocatable code later.
11798
11799         * mini-exceptions.c: Add a set of functions to query the various 
11800         runtime-generated exception functions.
11801
11802         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11803         mono_arch_.. () functions.
11804         
11805 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11806
11807         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11808
11809         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11810
11811         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11812         (mini_get_vtable_trampoline): Ditto.
11813
11814         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11815         code in the AOT case by returning the code size and a list of relocations to
11816         the caller.
11817
11818         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11819
11820 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11821
11822         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11823           clean the stack.
11824
11825         Contributed under MIT/X11 license.
11826
11827 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11828
11829         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11830         so the buffer size can be computed correctly. Fixes #404735.
11831
11832         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11833         normally as cfg->debug_info is already freed.
11834
11835 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11836
11837         * mini-amd64.c: For calls returning vtypes in registers, don't store
11838         the return address on the stack, instead allocate a separate local for
11839         it. Fixes #404729.
11840
11841 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11842
11843         * mini-trampolines.c, mini.h: Add an argument to
11844         mono_create_jit_trampoline_in_domain() for turning off the adding
11845         of the sync wrapper.
11846
11847         * mini.c: Use the JIT trampoline without sync instead of
11848         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11849         be patched.
11850
11851 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11852
11853         * driver.c: Turn on GSHARED optimization by default.
11854
11855 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11856
11857         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11858         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11859
11860         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11861         create a variant of the generic trampoline code callable from AOTed trampolines.
11862
11863         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11864         trampoline code callable from AOTed trampolines.
11865
11866         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11867
11868 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11869
11870         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11871         pass-through manner.
11872
11873         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11874         and don't fail sharing for them anymore.
11875
11876         * mini-exceptions.c: Handle exceptions in shared generic methods.
11877
11878         * generic-sharing.c: When checking the context of a generic
11879         method, also check its class's context.  Don't treat wrappers as
11880         sharable.
11881
11882         * mini-trampolines.c: Some code factored out to
11883         metadata/generic-sharing.c.  Handle the MRGCTX case.
11884
11885         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11886         we must deal with the method being of another instantiation of the
11887         class.  Add static rgctx invoke wrappers to generic methods.
11888
11889 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11890
11891         * mini.c: Provide all jit infos of generic shared methods with a
11892         generic jit info.
11893
11894         * mini-exceptions.c: Handle the new situation that a generic info
11895         might be available, but not info about the this/vtable/mrgctx
11896         variable.
11897
11898 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11899
11900         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11901         generic methods.
11902
11903 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * dominators.c (check_dominance_frontier): Fix a warning.
11906
11907         * mini.h: Add some missing prototypes.
11908
11909         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11910
11911         * driver.c (mono_jit_init_version): Correct the comments since the first
11912         argument should be the name of the root domain, not a filename.
11913
11914         * aot-runtime.c (make_writable): Error out if this is called while running
11915         with --aot-only.
11916         (load_aot_module): Ditto.
11917
11918         * aot-compiler.c: Really fix the computation of method indexes.
11919
11920         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11921         optimizations as this is no longer called frequently.
11922
11923         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11924         method and the invoke impl code and pass it to the delegate trampoline instead of
11925         just the delegate class.
11926
11927 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * aot-compiler.c: Fixup the computation of method indexes.
11930         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11931         the method builder infrastructure.
11932
11933         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11934         has no header.
11935
11936         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11937         mode, load the method right away instead of creating a trampoline.
11938
11939         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11940
11941         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11942         some checks a bit.
11943
11944 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11947         (mono_aot_load_method): Use method_index instead of method->token.
11948
11949         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11950         can handle icalls etc. properly.
11951
11952         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11953
11954         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11955
11956         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11957         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11958         JIT_ICALL_ADDR patch type.
11959
11960         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11961
11962         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11963         request flag.
11964         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11965
11966         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11967
11968 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11969
11970         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11971         domain->jit_code_hash.
11972
11973 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11976
11977 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11980         get_this_arg_from_call, let it compute it when needed.
11981
11982         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11983         gsctx from code only when needed.
11984
11985         * mini-trampolines.c (get_generic_context): Rename this to 
11986         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11987         it can be called by the arch backends.
11988
11989         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11990
11991 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * driver.c (mono_main): Add experimental --aot-only command line option.
11994
11995         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11996         set.
11997
11998 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11999
12000         * driver.c (DllMain): Remove mono_module_handle.
12001
12002         Contributed under MIT/X11 license.
12003
12004 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12007         for emitting methods which are not in the source assembly. Detect and report
12008         failure of assembling+linking.
12009         
12010         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12011
12012         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12013
12014 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12015
12016         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12017
12018 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * mini.h: Remove some obsolete prototypes.
12021
12022         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12023
12024 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12025
12026         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12027         supported by Visual Studio, so use alloca().
12028
12029 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12030
12031         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12032         Fixes #402585.
12033
12034 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12035
12036         * mini.c: Fail sharing of a generic method if it contains an open
12037         catch clause (because we don't pass MRGCTXs yet).
12038
12039 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12040
12041         * mini.c: When compiling a method with generic sharing, insert the
12042         method instantiated with an all-Object generic context into the
12043         jit info table, instead of the context of the first instantiation
12044         of the method we happen to compile.
12045
12046 2008-06-18  Martin Baulig  <martin@ximian.com>
12047
12048         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12049         `major_version' and `minor_version'.
12050
12051 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12052
12053         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12054         mono_method_is_generic_sharable_impl() takes an additional
12055         argument specifying whether to treat type variables as reference
12056         types.
12057
12058 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12059
12060         * mini.h: Removed obsolete prototypes.
12061
12062 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12063
12064         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12065         already handle them.
12066
12067 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12068
12069         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12070         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12071         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12072         tramp-x86.c: Added a MonoGenericContext* argument to
12073         mono_arch_get_unbox_trampoline() so that it can call other
12074         functions which require it.
12075
12076 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12077
12078         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12079         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12080         mono_arch_get_this_arg_from_call() takes a
12081         MonoGenericSharingContext* as well.
12082
12083 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12084
12085         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12086         implement generic sharing of unbox.
12087
12088 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12089
12090         * mini.c: Don't compute the vtable to determine whether a field is
12091         special static, because it might not work for open types.
12092
12093 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12094
12095         * mini.c: Removed the unused token_type and token_source arguments
12096         from get_runtime_generic_context_ptr().
12097
12098 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12099
12100         * mini.c (ADD_BINOP): fix the build
12101
12102 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12105         a widening op.
12106
12107 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12108
12109         * mini.h: Removed class relations enum that's not used anymore.
12110
12111 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12112
12113         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12114
12115         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12116         the lazy fetch trampoline access code.
12117
12118 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12121
12122 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12123
12124         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12125
12126         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12127
12128         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12129
12130 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12133         intrinsics.
12134
12135         * mini-ops.h: Add MIN/MAX_UN opcodes.
12136
12137         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12138         intrinsics.
12139
12140         * basic-math.cs: Add more min/max tests.
12141
12142         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12143
12144 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12145
12146         * mini.c: Small fix in the prologue of emit_castclass.
12147
12148 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12149
12150         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12151
12152         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12153         do not work even for unsigned types. Fixes #400014.
12154
12155         * basic-math.cs: Add regression tests for unsigned Min/Max.
12156
12157 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12158
12159         * mini.c: Added additional context_used argument to several
12160         functions, which will be needed for sharing generic methods.  Use
12161         GET_RGCTX macro wherever appropriate.  Declare only one
12162         context_used in mono_method_to_ir().
12163
12164 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12165
12166         * mini.c, generic-sharing.c: Removed generic class relations.
12167
12168         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12169         functions due to MRGCTX changes.
12170
12171 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12172
12173         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12174         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12175         with calculated IMT.
12176
12177         * mini.c: Generic sharing of calls via generic interfaces.
12178
12179         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12180         generic method with non-constant MonoGenericContext*.  Instead,
12181         the context is taken out of the method itself.
12182
12183 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12184
12185         * mini.c: Generic sharing of ldvirtftn.
12186
12187 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12188
12189         * mini.c: Generic sharing of ldftn.
12190
12191 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12192
12193         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12194
12195 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12196
12197         * mini.c: Generic sharing of the special case of ldtoken followed
12198         by a call to GetTypeFromHandle.
12199
12200 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12201
12202         * mini.c: Generic sharing of box for nullable types.
12203
12204 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12207         are passed on the stack. Fixes #324807.
12208
12209 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12210
12211         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12212         for the ArgValuetypeAddrInIReg case.
12213
12214         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12215         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12216
12217         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12218         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12219         local variable and pass the local variable by reference to the called method.
12220           
12221         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12222         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12223
12224         Contributed under MIT/X11 license.
12225
12226 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12227
12228         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12229
12230         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12231         everything.
12232
12233 2008-06-10  Martin Baulig  <martin@ximian.com>
12234
12235         * debug-mini.c
12236         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12237
12238 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12239
12240         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12241         possible error when no arguments are passed.
12242
12243         Contributed under MIT/X11 license.
12244
12245 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12246
12247         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12248         where the file name is NULL.
12249
12250 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * mini.c: Fix s390 build.
12253
12254 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12255
12256         * trace.c (mono_trace_parse_options): Fix warnings.
12257
12258         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12259
12260 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini.c (remove_block_if_useless): Avoid printing the method name.
12263         
12264         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12265         MONO_INST_NEW.
12266
12267         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12268         LMF. Not yet used.
12269
12270         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12271         translated code after it has been patched.
12272
12273 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12274
12275         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12276         avoid problems during code patching on SMP systems.
12277         (emit_call): Avoid adding a patch info which is already added by 
12278         emit_call_body.
12279         (mono_arch_emit_exceptions): Ditto.
12280
12281 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12284         MONO_TYPE_ISSTRUCT already checks for it.
12285
12286 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12287
12288         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12289           structs with floats on Winx64 the float registers are not used.  
12290           The integer registers are always used..
12291         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12292           only one register will be used and only if the size of the struct 
12293           is 1,2,4, or 8 bytes.
12294
12295         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12296           to work for Winx64.
12297
12298         Contributed under MIT/X11 license.
12299
12300 2008-06-05  Martin Baulig  <martin@ximian.com>
12301
12302         * debug-debugger.c (debugger_lookup_class): Also call
12303         mono_class_setup_methods() here; we're only called from RTI.
12304
12305 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12306
12307         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12308         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12309         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12310         Post-process object files and add dtrace-generated object, if necessary.
12311
12312         Contributed under MIT/X11 license.
12313
12314 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12315
12316         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12317         element class.
12318
12319         * mini.c: Generic sharing for unbox.any and castclass.
12320
12321 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12322
12323         * mini.c: Ignore tailcall prefix in shared generic code and when
12324         doing calls which require a vtable/rgctx argument.
12325
12326 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12327
12328         * mini.c: Don't free the JIT info.
12329
12330         * driver.c: Changes in the JIT info table testing code.
12331
12332 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12333
12334         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12335         interruption. Fix some warnings.
12336
12337         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12338         interruption_checkpoint.
12339
12340 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12341
12342         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12343         from embedding applications.
12344
12345 2008-06-02  William Holmes  <billholmes54@gmail.com>
12346
12347         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12348           reserving 32 bytes on the stack when making calls. 
12349
12350         Contributed under MIT/X11 license.
12351
12352 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12355         the linear IL branch.
12356
12357         * driver.c: Print out more information for --version on arm.
12358
12359 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12360
12361         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12362         bb_exit instead, since out of line bblocks might not actually be emitted
12363         out-of-line.
12364         
12365         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12366         maximum epilog size for out of line bblocks if tracing is enabled.
12367
12368         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12369
12370 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12371
12372         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12373
12374 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12377         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12378         opcodes.
12379
12380 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12383         the 'value' to store is a constant.
12384
12385         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12386
12387         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12388         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12389
12390 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12391
12392         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12393         for accessing method->generic_container.
12394
12395 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12396
12397         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12398         
12399         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12400
12401         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12402
12403         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12404         fails.
12405
12406 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12409
12410         * mini.c: Handle the case when mono_class_vtable () fails.
12411
12412 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12413         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12414         the stat profiler.
12415
12416 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12417
12418         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12419         together with domain sharing.
12420
12421 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12422
12423         * mini.c: Treat callvirts to final methods like non-virtual calls
12424         when doing generic sharing, i.e. look them up in the runtime
12425         generic context.
12426
12427 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12428
12429         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12430         with computed types (for generic sharing).
12431
12432         * mini.c: Generic sharing for mkrefany and refanyval.
12433
12434 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12435
12436         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12437         possible.
12438
12439         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12440         the generic sharing code.
12441         
12442         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12443         when needed.
12444
12445 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12448
12449 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12450
12451         * driver.c: updated copyright date
12452
12453 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12456         needed.
12457
12458 2008-05-19  Martin Baulig  <martin@ximian.com>
12459
12460         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12461         pointing to the new `_mono_debug_using_mono_debugger' variable.
12462
12463         * driver.c
12464         (mono_main): Check mono_debug_using_mono_debugger() rather than
12465         the `MONO_INSIDE_MDB' environment variable to check whether we're
12466         inside the debugger.
12467
12468 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12469
12470         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12471         argument.
12472
12473 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12474
12475         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12476
12477         * mini.c: Added mini_assembly_can_skip_verification. This
12478         function checks if the assembly requested to skip verification. 
12479         Fixes part of #387274.
12480
12481 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12482
12483         * mini.c (mini_get_method): Disable the check for open generic classes when
12484         using generic sharing.
12485
12486         * generics.cs: Add a test for #387034.
12487
12488         * mini.c (mini_get_method): Check whenever the method class is an open generic
12489         type, and return NULL in that case, causing a verification error. Fixes
12490         #384123.
12491
12492 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12493
12494         * driver.c (mono_main): Revert r102623. The right
12495         thing to do is to enable the verifier under verifiable
12496         unless a --security flag was passed.
12497
12498         We need this non-trivial behavior for --verify-all otherwise
12499         mcs-compileall won't be able to use it. As it needs everything to
12500         be verified under validil.
12501
12502 2008-05-06  Martin Baulig  <martin@ximian.com>
12503
12504         Fix #383749.
12505
12506         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12507         (mono_debugger_thread_cleanup): Likewise.
12508         (mono_debugger_extended_notification): Likewise.
12509
12510 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12511
12512         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12513         against both inflated and non-inflated methods. We need to check against the
12514         generic definition for cases where the instantiated method is not visible.
12515         We need to check against the inflated types for cases where the instantiation
12516         changes any super type. This fixes #382986.
12517
12518         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12519         that check for visibiliy as generic params only appears as the type subject
12520         of tokens on call opcodes. Field manipulation and ldftn must always
12521         target an exact type.
12522
12523 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12524
12525         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12526         if no related --security flag is passed.
12527
12528 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12529
12530         * mini-arch.h: Prepare support for ppc64.
12531
12532         Contributed under MIT/X11 license.
12533
12534 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12535
12536         * aot-runtime.c: Prepare support for ppc64.
12537
12538         Contributed under MIT/X11 license.
12539
12540 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12541
12542         * mini-ops.h: Prepare support for ppc64.
12543
12544         Contributed under MIT/X11 license.
12545
12546 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12547
12548         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12549
12550         Contributed under MIT/X11 license.
12551
12552 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12555         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12556         assemblies on windows.
12557
12558 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12559
12560         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12561         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12562         * main.c: Use UTF-8 encoded command line instead of Windows default code
12563         page on Windows to support Unicode.
12564         * driver.c (DllMain): New function for mixed-mode assembly support.
12565         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12566         export __stdcall functions without decoration.
12567
12568         Contributed under MIT/X11 license.
12569
12570 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12571
12572         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12573         saving it very early.
12574
12575 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12576
12577         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12578         deleted.  The only way to access the new RGCTX is via the
12579         trampline.
12580
12581         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12582         vtable instead of the RGCTX to static methods.
12583
12584         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12585         accessing the new RGCTX.
12586
12587         * generic-sharing.c: There is no separation between self, type
12588         arguments and other types in the RGCTX anymore.
12589
12590 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12591
12592         * mini-amd64.c (add_general): Remove previous stack adjustment.
12593         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12594         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12595         for 32 bytes of stack space reserved for all calls.
12596         
12597         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12598         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12599         adjustment.
12600         
12601         Code contributed under MIT/X11 license.
12602
12603 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12604
12605         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12606         against the root definition, peeling out method and type instantiations.
12607         Cache verify success results, code that fails verification is still
12608         checked multiple times.
12609
12610 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12613
12614 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12615
12616         * mini-amd64.c (add_general): Always increment stack on Win64.
12617         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12618         on Win64.
12619         
12620         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12621         stack based argument handling on Win64.
12622         
12623         Code contributed under MIT/X11 license.
12624
12625 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12626
12627         * Makefile.am (version.h): Add support for git-svn.
12628
12629 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12630
12631         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12632         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12633         avoiding allocations and libc functions which might deadlock.
12634         
12635         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12636         'no-gdb-backtrace' option is set.
12637
12638         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12639
12640         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12641
12642 2008-04-21  Martin Baulig  <martin@ximian.com>
12643
12644         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12645         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12646
12647 2008-04-21  Martin Baulig  <martin@ximian.com>
12648
12649         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12650         `thread_vtable', `event_handler_ptr' and `event_handler'.
12651
12652 2008-04-21  Martin Baulig  <martin@ximian.com>
12653
12654         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12655         allows delayed initialization of the `executable_code_buffer' when
12656         attaching.
12657
12658 2008-04-21  Martin Baulig  <martin@ximian.com>
12659
12660         * mini.h (mono_debugger_create_notification_function): Removed.
12661         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12662
12663         * mdb-debug-info64.s
12664         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12665
12666         * mdb-debug-info32.s
12667         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12668
12669         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12670         currently only works on x86 and x86_64, so don't create it on ppc.
12671
12672 2008-04-21  Martin Baulig  <martin@ximian.com>
12673
12674         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12675
12676         * mini.c
12677         (mini_method_compile): In the fp elimination check, check
12678         `debug_options.mdb_optimizations' in addition to
12679         mono_debug_using_mono_debugger().       
12680
12681         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12682         disable some JIT optimizations which are only disabled when
12683         running inside the debugger.
12684         Added `--help-debug' option to describe the debugging options.
12685         (parse_debug_options): New static function to parse the `--debug'
12686         options, so we can easily add more stuff in future.
12687
12688 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12689
12690         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12691         the method has no body.
12692
12693 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12694
12695         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12696         assembly is not allowed in MSVC 64-bit compiler. 
12697         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12698         as we get floating point exceptions everywhere.
12699         
12700         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12701         correctly align arguments for call to throw_exception.
12702         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12703         
12704         Code contributed under MIT/X11 license.
12705
12706 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12709
12710 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12713
12714         * mini-amd64.c (NEW_INS): Set cil_code.
12715
12716         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12717         from mini-amd64.c so all debugger related logic is in one place.
12718
12719         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12720         later won't have a random ip assigned to them.
12721
12722 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12723
12724         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12725         the arch specific function initializes code_size.
12726         (mono_create_delegate_trampoline): Ditto.
12727
12728         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12729         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12730         platforms.
12731
12732         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12733         running under the debugger.
12734
12735         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12736         debugger.
12737
12738         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12739         debugger. Also move the disabling of optimizations here from driver.c.
12740         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12741         debugger.
12742
12743         * mini.h (MonoCompile): Add a few new flags.
12744
12745 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12748         so the cil_code field of created MonoInst's is properly set.
12749         (mini_select_instructions): Ditto.
12750
12751         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12752         (MONO_INST_NEW_CALL): Ditto.
12753
12754         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12755         in many places so the ins->cil_code field is properly initialized.
12756
12757         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12758         place.
12759
12760 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12761
12762         * mini.c (mini_method_compile): Print a different message when compiling a 
12763         shared method.
12764         
12765         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12766         > 1.
12767
12768 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12771         SSE2 instructions.
12772
12773         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12774         
12775 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12776
12777         * mini.c (handle_stack_args): Make this return void since its return value was
12778         never used. Also set cfg->unverifiable for invalid IL instead of calling
12779         G_BREAKPOINT ().
12780
12781 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12782
12783         * mini.c: Make sure "this" is live in catch clauses with type
12784         variables in shared generic code.
12785
12786 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12787
12788         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12789         generic_class_is_reference_type() to ensure the proper behaviour
12790         when sharing generic code and the type in question is a type
12791         argument.
12792
12793 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12796         race conditions when printing thread dumps. Fixes #377738.
12797
12798 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12799         
12800         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12801         shows up when both MonoInst arguments can cause aliasig.
12802         There is likely no way in the current JIT to trigger this problem, but
12803         it showed up in the development of generics sharing, when in a new
12804         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12805         When the generics sharing code will be committed, its tests will be
12806         valid also for this bug.
12807
12808 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12811         PATCH_INFO_METHOD.
12812
12813         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12814         NULL.
12815
12816 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12819         use a more detailed exception message for InvalidCastException.
12820
12821         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12822
12823         * driver.c (mono_main): Add --debug=casts option to turn on better 
12824         InvalidCastException message details.
12825
12826         * mini.c (mini_get_debug_options): New helper function to return the address of
12827         the debug_options variable.
12828
12829         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12830         the jit_tls TLS variable.
12831
12832         * mini.c (mono_jit_tls): New TLS variable.
12833
12834         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12835         option is used.
12836
12837 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12838
12839         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12840
12841         * mini.c: Removed verifer related stuff, code moved to verify.c.
12842
12843         * driver.c: Using code from verify.c instead of mini.c.
12844
12845 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12848         longer valid.
12849
12850 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12851
12852         * mini.c (check_for_method_verify): Enabling verification of
12853         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12854         have been fixed.
12855
12856 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12859         caller saved registers as well.
12860         
12861         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12862         saved registers as well.
12863
12864 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12867
12868         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12869         code.
12870
12871 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12874         to get_call_info.
12875         (get_call_info): Take a gsctx argument instead of 'cfg'.
12876
12877 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12878
12879         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12880         mono_verify_all is set.
12881
12882         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12883
12884         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12885
12886 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12887
12888         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12889         an exception.
12890
12891         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12892         verifier and the code generated by the compiler.
12893
12894 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12895
12896         * mini.c: Generic sharing of the non-nullable case of the box
12897         instruction.
12898
12899 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12900
12901         * inssel.brg: Fix the build.
12902
12903         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12904
12905 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12906
12907         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12908         Array:Address. Fixes #372410.
12909
12910         * iltests.il.in: New tests for readonly prefix.
12911
12912 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12915         mini-trampolines.c.
12916
12917         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12918         mini-exceptions.c.
12919
12920         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12921         
12922         * mini.c (mono_decompose_op_imm): New helper function.
12923
12924         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12925         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12926         return value.
12927
12928         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12929         mono_arch_output_basic_block. Fix warnings.
12930
12931         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12932         for now.
12933
12934 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12935
12936         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12937         since the extra frame is now detected automatically inside the loop.
12938
12939         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12940         opts which are now in mono_peephole_ins ().
12941         
12942         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12943
12944         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12945         frames and skip duplicate managed-to-native frames. Fixes #367665.
12946
12947         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12948         opts which are now in mono_peephole_ins ().
12949         (mono_arch_peephole_pass_2): Ditto.
12950
12951         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12952
12953         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12954         arch independent peephole optimizations.
12955
12956         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12957         opts which are now in mono_peephole_ins ().
12958
12959         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12960         
12961         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12962
12963         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12964         pattern.
12965
12966         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12967         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12968         opcode. 
12969
12970 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12973         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12974         return value.
12975
12976         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12977         mono_arch_output_basic_block. Fix warnings.
12978
12979 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12980
12981         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12982         conv.ovf.u.un.
12983
12984 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12987         conv.ovf.u.un.
12988
12989         * iltests.il: Add new tests.
12990
12991 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12992
12993         * mini.c: Removed Windows version macros.
12994
12995 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12996
12997         * generic-sharing.c: Put reflection types in the extensible part
12998         of the runtime generic context.
12999
13000         * mini.c: Generic sharing of the GetTypeHandle special case of the
13001         ldtoken instruction.
13002
13003 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13006
13007         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13008         
13009         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13010         consistency with the other version on the linear IR branch.
13011
13012         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13013
13014         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13015
13016         * iltests.il.in: Add new tests.
13017
13018 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13019
13020         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13021
13022         * iltests.il.in: Add new tests.
13023
13024 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13025
13026         * mini.c: Two variables with the same name were declared in
13027         nesting contexts and one wasn't initialized.  Fixed.
13028
13029 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13030
13031         * mini.c: Generic sharing of the initobj instruction.
13032
13033 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13034
13035         * mini.c: make the test to optimize ldtoken from typeof() more
13036         precise.
13037
13038 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13039
13040         * mini.c: Generic sharing of the initobj instruction for reference
13041         types.
13042
13043 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13044
13045         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13046         the mono_breakpoint_clean_code() code to perform bound checks.
13047
13048 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13049
13050         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13051         mono_arch_patch_callsite() to include the start of the managed method
13052         to be able to perform bound checks.
13053
13054 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13055
13056         * mini.c: Generic sharing for the isinst instruction.
13057
13058 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13059
13060         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13061         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13062         with the runtime generic context argument.
13063
13064         * mini.c: Share calls to several types of unsharable methods by
13065         putting the address of the method code in the runtime generic
13066         context and doing an indirect call.
13067
13068         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13069         to switches.
13070
13071 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13072
13073         * generic-sharing.c: Change due to a change in the runtime genric
13074         context API.
13075
13076 2008-03-15  Martin Baulig  <martin@ximian.com>
13077
13078         * tramp-x86.c
13079         (mono_arch_nullify_class_init_trampoline): Add call to
13080         mono_breakpoint_clean_code() to make things work when running
13081         inside the debugger.
13082
13083         * tramp-amd64.c
13084         (mono_arch_nullify_class_init_trampoline): Add call to
13085         mono_breakpoint_clean_code() to make things work when running
13086         inside the debugger.
13087
13088 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * inssel-long.brg (reg): Fix 64 bit build.
13091
13092 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13093
13094         * mini.c, mini.h: Share static generic code by passing it an
13095         implicit argument pointing to the runtime generic context.
13096
13097         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13098         inssel-long32-mips.brg: New opcodes for calling shared static,
13099         which need to be passed the runtime generic context.
13100
13101         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13102         argument on the stack in the prologue if needed.  New function for
13103         finding the runtime generic context argument from the registers
13104         saved by the trampoline.
13105
13106         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13107         runtime generic context argument.
13108
13109         * tramp-amd64.c: Also restore the register used for the runtime
13110         generic context argument.
13111
13112         * mini-trampoline.c: Resolve shared static calls by consulting the
13113         runtime generic context via the new argument.
13114
13115         * generic-sharing.c: Add an argument to sharability-checking
13116         functions that specifies whether type variables should be treated
13117         as sharable type arguments.
13118
13119         * inssel-x86.brg: Removed a superfluous, buggy rule.
13120
13121         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13122         to switches.
13123
13124 2008-03-14  Martin Baulig  <martin@ximian.com>
13125
13126         * debug-debugger.c (main_thread_handler): Call
13127         mono_runtime_run_main() without sending any notifications.
13128
13129         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13130
13131 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13134
13135 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13136
13137         * tramp-x86.c: Fixed register restore offsets in the trampoline
13138         code for ECX and EDX.
13139
13140 2008-03-12  Geoff Norton  <gnorton@novell.com>
13141
13142         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13143         different ucontext_t implementations.
13144         * exceptions-arm.c: Use the above defines to get exceptions working on 
13145         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13146         * mini-arm.c: Implement iPhone icache support (based on a patch by
13147         Luke Howard lukeh@padl.com)
13148
13149 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13150
13151         * mini.c: Enable generic sharing of calls to non-static
13152         non-interface non-generic non-value-type methods.
13153
13154         * mini-trampolines.c: Resolve calls from shared generic code.
13155
13156 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13157
13158         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13159
13160         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13161
13162 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13163
13164         * mini.c: some fixes for the AOT compiler.
13165
13166 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13167
13168         * cpu-amd64.md: Add clob:1 to some float opcodes.
13169
13170 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13171
13172         * mini.h: Added MiniVerifierMode enumeration.
13173
13174         * mini.c: Added mini_verifier_set_mode to control
13175         the usage of the new verifier.
13176
13177         * mini.c (mono_method): Integrated the new verifier.
13178
13179         * driver.c: Extended --security option with validil and
13180         verifiable options to activate the new verifier.
13181
13182 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13185         optimization to ctors taking 0 or 2 arguments too.
13186
13187         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13188         a bit.
13189
13190         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13191
13192         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13193
13194 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13197         non-aot case as well.
13198
13199         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13200
13201         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13202         changes.
13203
13204         * aot-compiler.c (encode_patch): Ditto.
13205
13206         * mini.h (G_MININT32): Fix the definition of this.
13207
13208 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13209
13210         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13211
13212         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13213
13214 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13217         methods returning vtypes in registers.
13218         (mono_arch_allocate_vars): Ditto.
13219
13220         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13221
13222         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13223
13224         * generics.cs: Add a test from the linear IR branch.
13225
13226         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13227
13228         * mini.c (inline_method): Cache failed inline attempts.
13229
13230 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13231
13232         * mini.c: For shared methods of generic classes put the location
13233         of "this" into the MonoGenericJitInfo.
13234
13235         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13236         register out of a MonoContext by register number.  Add the generic
13237         sharing context as an argument to mono_arch_find_this_argument().
13238
13239         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13240         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13241         for new arch function.
13242
13243         * mini-exception.c: Handle open exception clauses in shared
13244         generic code.
13245
13246         * mini-trampolines.c: Supply additional argument to
13247         mono_arch_find_this_argument().
13248
13249 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13250
13251         * Makefile.am (regtests): Run the bench.exe tests last.
13252
13253 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13256         a bit.
13257
13258 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13259
13260         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13261         with MS.
13262
13263         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13264         
13265         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13266
13267         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13268         whose class has no cctor.
13269
13270         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13271
13272 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13275         unverified.
13276
13277 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13280         to be in sync with the code on the linear IR branch.
13281
13282         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13283
13284         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13285
13286 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13289
13290         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13291
13292         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13293
13294         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13295
13296         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13297         
13298         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13299         body.
13300
13301 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13302
13303         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13304         OP_LOADR4_MEMBASE emission.
13305
13306         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13307         (mono_spillvar_offset_float): Ditto.
13308
13309         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13310
13311         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13312         emission.
13313
13314         * basic-long.cs: Add regression tests for them.
13315
13316         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13317         use.
13318         (mono_arch_allocate_vars): Fix representation of single-precision float
13319         argument.
13320         (mono_arch_output_basic_block): Ditto.
13321
13322         * inssel-mips.brg: Ditto, remove duplicate items.
13323
13324         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13325         arguments of tail calls as on other platforms.
13326         (mono_arch_output_basic_block): Handle tail calls.
13327
13328         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13329         register.
13330
13331         * objects.cs (test_5_pass_static_struct): Add test for it.
13332
13333         Contributed under MIT/X11 license.
13334
13335 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * Makefile.am: Use gmcs for compiling the regression tests.
13338
13339         * *.2.cs *.2.il: Rename to *.cs and *.il.
13340
13341 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13342
13343         * regalloc.h: Make the vassign array smaller.
13344
13345         * mini.c (mini_method_compile): Remove an unused field in cfg.
13346
13347         * mini-codegen.c: Add a bunch of micro optimizations.
13348
13349 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * regalloc.h: Remove some unused fields.
13352
13353 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13356
13357         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13358
13359 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13360
13361         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13362
13363         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13364         trampoline: Fetch an entry from the runtime generic context.  If
13365         it's NULL, jump to the actual trampoline to fill the runtime
13366         generic context.  Otherwise, return it.
13367
13368         * mini.c: Call the lazy fetch trampoline to get entries out of the
13369         runtime generic context.
13370
13371         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13372         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13373         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13374
13375 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13376
13377         * mini.c: Fetch data out of the extensible part of the runtime
13378         generic context instead of calling a helper function.
13379
13380         * generic-sharing.c: Some functions moved into
13381         metadata/generic-sharing.c.  Helper function for fetching other
13382         types now checks and asserts against extensible rgctx (just for
13383         debugging purposes - the helper function isn't called anymore
13384         unless for debugging).
13385
13386 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13389         for tail calls up to the point that the tests in iltests.exe run. Also add a
13390         dummy CKFINITE implementation.
13391         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13392         needed for trampoline LMF frames.
13393
13394         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13395         trampoline LMF frames.
13396
13397 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13398
13399         * mini.c (inline_method): clean any pending loader error when inlining fail.
13400         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13401
13402 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13405
13406         * aot-runtime.c (decode_patch_info): Ditto.
13407
13408         * mini.c (mono_resolve_patch_target): Ditto.
13409         
13410         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13411         icall wrappers.
13412
13413         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13414         
13415         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13416         if it references an icall address.
13417
13418 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13419
13420         * cpu-s390x.md: Remove some more unused opcodes.
13421         
13422         * cpu-s390x.md: Remove some unused opcodes.
13423
13424         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13425         mono_op_imm_to_op ().
13426
13427         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13428         instead of a switch statement.
13429         
13430         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13431         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13432
13433         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13434         
13435         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13436
13437         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13438         -1.
13439
13440 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13441
13442         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13443         opened. Fixes #362607.
13444
13445         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13446
13447         * iltests.il.in: Add a test for static methods in interfaces.
13448
13449 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * genmdesc.c (build_table): Fix a crash on older glib versions.
13452
13453         * cpu-sparc.md: Remove some unused opcodes.
13454         
13455         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13456         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13457
13458         * cpu-amd64.md: Remove some unused opcodes.
13459
13460         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13461         like the other opcodes.
13462
13463 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13466
13467         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13468
13469         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13470         variables 'cfg' instead of 'm' for consistency.
13471
13472         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13473
13474         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13475         argument holding the vtype return address, to avoid the ambigious use of
13476         cfg->ret for this purpose.
13477
13478         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13479
13480         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13481         
13482         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13483         new mono_print_ins () function which only takes one argument.
13484
13485 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13488         macro arguments.
13489
13490 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13491
13492         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13493
13494         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13495
13496         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13497         opcodes and other small changes.
13498
13499         * mini-ops.h: Add some new opcodes from the linear IR branch.
13500
13501         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13502
13503         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13504         opcodes, use the REG_MEMBASE opcodes instead.
13505         
13506         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13507         opcodes, use the REG_MEMBASE opcodes instead.
13508         
13509         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13510         linear IR branch.
13511
13512         * mini.c (mono_op_imm_to_op): New helper function.
13513
13514         * mini-ops.h: Add some opcodes from linear IR branch.
13515
13516 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13517
13518         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13519         <tsv@solvo.ru>.
13520
13521 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13522
13523         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13524         OP_ICONV_TO_R4/R8.
13525
13526         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13527
13528 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * aot-compiler.c (emit_method_code): Add an assert.
13531
13532         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13533         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13534         methods.
13535
13536 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13539         some load/store opcodes so they are consistent. 
13540         (mono_arch_emit_prolog): Simplify some code.
13541
13542         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13543
13544         * objects.cs: Add tests for large argument offsets on ARM.
13545
13546         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13547         stack offsets. Fixes #359651.
13548
13549         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13550
13551         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13552
13553         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13554
13555         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13556
13557         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13558
13559         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13560         rid of CEE_CONV_R_UN.
13561
13562         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13563
13564 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13565
13566         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13567
13568         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13569
13570         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13571
13572         * cpu-amd64.md: Remove some unused opcodes.
13573
13574         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13575
13576         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13577
13578         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13579         arch specific functions for its parts. Call the peephole pass after local
13580         regalloc so the prolog can compute a more accurate max_offset.
13581         
13582         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13583         the corresponding OP_I/OP_L opcodes.
13584
13585         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13586
13587         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13588
13589 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13592         as they are handled in mini.c.
13593
13594         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13595         
13596         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13597         case since it is handled in mini.c.
13598
13599         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13600
13601         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13602
13603         * *.c: Use the new opcodes in the IR and back end code.
13604
13605         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13606
13607         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13608
13609 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13610
13611         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13612         an assert because it has a race condition.
13613
13614 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13617
13618         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13619
13620         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13621
13622         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13623         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13624
13625 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13626
13627         * cpu-amd64.md (move): Correct the maximum size of move.
13628
13629 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13630
13631         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13632         the generic class init trampoline to return quickly if the class
13633         is already inited.
13634
13635 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13638         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13639
13640 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13641
13642         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13643         branch.
13644
13645 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * objects.cs: Add some soft-float tests.
13648
13649         * mini.c: Fix a couple more soft-float issues.
13650
13651         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13652
13653         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13654         avoid a REX prefix.
13655
13656 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13659         exception happens while compiling a virtual method.
13660
13661 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13664         
13665         * mini-sparc.c: Fix build.
13666
13667         * mini-sparc.c (get_call_info): Add support for generic sharing.
13668
13669         * mini-exceptions.c: Add a FIXME.
13670
13671 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13674         altstack handling code.
13675
13676         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13677         
13678         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13679
13680         * mini-s390.c: Add support for generic sharing.
13681
13682         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13683         Fix CAS on s390.
13684         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13685
13686         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13687
13688         * mini-s390x.c: Add support for generic sharing.
13689         
13690         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13691         Fix CAS on ia64.
13692         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13693
13694         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13695         can be used since it takes a 16 bit signed immediate.
13696
13697         * inssel-s390x.brg: Fix OP_SETRET.
13698
13699         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13700
13701         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13702
13703         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13704
13705         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13706
13707         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13708         in one place.
13709
13710         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13711         stuff.
13712
13713         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13714         of the unused mono_arch_patch_delegate_trampoline stuff.
13715
13716 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * basic-long.cs: Move the fp related tests to basic-float.cs.
13719
13720         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13721
13722         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13723
13724         * basic-calls.cs: Add a test for proper float argument passing.
13725
13726         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13727         if the context corresponds to an exception received through a signal.
13728
13729         * exceptions.cs: Add a test for nullref handling at the start of a try
13730         clause.
13731
13732         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13733
13734         * jit-icalls.c (mono_break): New JIT icall.
13735
13736         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13737
13738         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13739
13740 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * cpu-*.md: Get rid of unused opcodes.
13743
13744         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13745
13746         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13747         by all platforms.
13748
13749         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13750         define.
13751
13752         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13753         the arch independent trampoline code in mini-trampolines.c.
13754
13755         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13756
13757         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13758
13759         * mini-s390.h: Remove an unused define.
13760         
13761         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13762         the arch independent trampoline code in mini-trampolines.c.
13763
13764         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13765
13766 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13767
13768         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13769
13770         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13771
13772         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13773
13774         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13775
13776         * cpu-amd64.md: Use smaller sizes for int opcodes.
13777
13778         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13779
13780         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13781         objects.cs.
13782
13783         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13784         debugging.
13785
13786         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13787         instead of though a pointer to save an indirection when accessing elements of
13788         the array.
13789
13790         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13791         some typos.
13792         (NOT_IMPLEMENTED): New helper macro.
13793         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13794         of a bb.
13795
13796         * *.c: Use the new helper macro.
13797
13798 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13801
13802 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13803
13804         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13805         stack slots.
13806
13807 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13808
13809         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13810         profiling is enabled.
13811         
13812         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13813         the end.
13814         (mono_arch_emit_prolog): Add more first bblock optimizations.
13815
13816         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13817         in order if possible.
13818         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13819         bblock, since the arguments are still in their original registers.
13820
13821         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13822
13823 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13824
13825         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13826         as well.
13827
13828         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13829         offset 0.
13830
13831         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13832
13833         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13834         process async exceptions received while in unmanaged code.
13835
13836         * mini.c (mini_init): Install a callback with the runtime which will be called
13837         when a thread receives an async exception while in unmanaged code.
13838
13839         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13840
13841         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13842
13843 2008-01-16  Wade Berrier  <wberrier@novell.com>
13844
13845         * cpu-g4.md:
13846         * cpu-arm.md:
13847         * cpu-s390x.md:
13848         fix build
13849
13850 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13851
13852         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13853         compilation with sun cc.
13854
13855         * cpu-*.md: Fix the build.
13856
13857         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13858
13859         * mini-amd64.h: Add some comments to the MonoLMF structure.
13860
13861         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13862         
13863         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13864         in the LMF structure if possible. This saves two instructions in the
13865         managed->native wrappers.
13866
13867         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13868
13869 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13870
13871         * generic-sharing.c: New type argument lookup code which uses the
13872         runtime generic context template.
13873
13874 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13877
13878         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13879         (mono_arch_output_basic_block): Fix localloc implementation.
13880
13881         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13882
13883         * mini-ia64.c (peephole_pass): Fix ia64 build.
13884
13885         * mini-amd64.c (peephole_pass): Fix a warning.
13886         
13887         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13888         at a constant offset from sp/fp.
13889
13890         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13891         instead of obtaining it from *lmf in the managed method case.
13892
13893 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13894
13895         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13896
13897 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13898
13899         * mini.h (MonoInstList): New type.
13900         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13901         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13902         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13903         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13904         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13905         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13906         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13907         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13908         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13909         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13910         MONO_INST_LIST_FOR_EACH_ENTRY,
13911         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13912         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13913         mono_inst_list_first, mono_inst_list_last,
13914         mono_inst_list_next, mono_inst_list_prev): New instruction
13915         list handling interfaces.
13916         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13917         list head 'ins_list'.
13918         (MonoInst): Replace next pointer with list head 'node'.
13919         (MonoCallInst): Make 'out_args' a MonoInstList.
13920         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13921         (MonoCompile): Delete reverse_inst_list and
13922         reverse_inst_list_len.
13923         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13924         mono_arch_lowering_pass, mono_arch_local_regalloc,
13925         mono_arch_output_basic_block, mono_arch_emit_prolog):
13926         Convert to new instruction lists.
13927         (insert_after_ins): Delete.
13928         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13929         instruction lists.
13930         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13931         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13932         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13933         mono_emulate_opcode, mono_emit_load_got_addr,
13934         inline_method, mono_method_to_ir, mono_print_bb_code,
13935         print_dfn, decompose_pass, nullify_basic_block,
13936         replace_out_block_in_code, remove_block_if_useless,
13937         merge_basic_blocks, move_basic_block_to_end,
13938         try_unsigned_compare, optimize_branches, mono_print_code,
13939         mini_select_instructions, remove_critical_edges): Likewise.
13940         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13941         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13942         mono_arch_output_basic_block, mono_arch_emit_prolog):
13943         Likewise.
13944         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13945         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13946         mono_arch_output_basic_block): Likewise.
13947         (inst_list_prepend, insert_after_ins): Delete.
13948         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13949         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13950         instruction lists.
13951         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13952         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13953         mono_arch_emit_prolog): Likewise.
13954         * cfold.c (mono_constant_fold): Likewise.
13955         * liveness.c (visit_bb, mono_analyze_liveness,
13956         optimize_initlocals): Likewise.
13957         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13958         * graph.c (mono_draw_code_cfg): Likewise.
13959         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13960         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13961         mono_ssa_cprop): Likewise.
13962         * abcremoval (get_relations_from_previous_bb, process_block):
13963         Likewise.
13964         * local-propagation (mono_cprop_invalidate_values,
13965         mono_local_cprop_bb): Likewise.
13966         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13967         peephole_pass, mono_arch_output_basic_block,
13968         mono_arch_emit_prolog): Likewise.
13969         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13970         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13971         mono_arch_emit_prolog): Likewise.
13972         (insert_after_ins): Delete.
13973         * aliasing.c (print_code_with_aliasing_information,
13974         mono_build_aliasing_information, mono_aliasing_deadce):
13975         Convert to new instruction lists.
13976         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13977         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13978         mono_arch_local_regalloc, mono_arch_output_basic_block):
13979         Likewise.
13980         (insert_after_ins): Delete.
13981         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13982         peephole_pass, mono_arch_output_basic_block): Convert to
13983         new instruction lists.
13984         * mini-codegen (InstList, inst_list_prepend,
13985         insert_after_ins): Delete.
13986         (insert_before_ins, get_register_force_spilling,
13987         get_register_spilling, free_up_ireg, free_up_reg,
13988         create_copy_ins, create_spilled_store, alloc_int_reg,
13989         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13990         to new instruction lists.
13991         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13992         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13993         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13994         (insert_after_ins): Delete.
13995         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13996         mono_arch_local_regalloc, mono_arch_output_basic_block,
13997         mono_arch_call_opcode): Convert to new instruction lists.
13998         (insert_after_ins): Delete.
13999         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14000         peephole_pass, mono_arch_output_basic_block,
14001         mono_arch_emit_prolog): Convert to new instruction lists.
14002
14003 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14004
14005         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14006
14007         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14008         Fixes #353182.
14009
14010         * Makefile.am (version.h): Make this work with non-bash shells.
14011
14012 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14013
14014         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14015
14016 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14017
14018         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14019         the InitializeArray optimization.
14020
14021 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14022
14023         * mini.c driver.c: Don't include os/gc_wrapper.h.
14024
14025 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14026
14027         * mini.c (print_jit_stats): Print GC statistics if available.
14028
14029 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14032
14033 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14036
14037 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14038
14039         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14040         
14041         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14042
14043         * driver.c (mono_main): Ditto.
14044
14045 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14048
14049         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14050         in the vtable can't be encoded.
14051         (compile_method): Ditto.
14052
14053 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14056         defined.
14057
14058         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14059         lmf->rbp.
14060
14061         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14062         the top LMF entry belongs to the current method.
14063
14064         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14065
14066 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14069         
14070         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14071
14072         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14073
14074         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14075
14076         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14077
14078         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14079         implementation.
14080
14081         * basic-float.cs: Add an ulong->double cast test.
14082
14083 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini.c (mono_method_to_ir): Fix a warning.
14086
14087 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14088
14089         * mini-ops.h: Add OP_SWITCH.
14090
14091         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14092         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14093
14094 2007-12-11  Geoff Norton  <gnorton@novell.com>
14095
14096         * mini-s390x.c: Minor change to the MAX() define to allow
14097         it to compile with other gcc versions.
14098
14099 2007-12-11  Geoff Norton  <gnorton@novell.com>
14100
14101         * cpu-s390x.md:
14102         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14103
14104 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14105
14106         exceptions-arm.c (mono_arch_get_restore_context): Restore
14107         the frame pointer.
14108
14109         exceptions-arm.c (throw_exception): Save the frame pointer.
14110         This is a partial fix for #323747. Only the client side is
14111         fixed.
14112
14113 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14114
14115         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14116         was using an unrelated variable to log the class which
14117         needed the cctor to be called. This was crashing on arm.
14118
14119 2007-12-09  Robert Jordan  <robertj@gmx.net>
14120
14121         * mini-x86.c (mono_arch_emit_epilog):
14122         Consider all kinds of 64-bit types. Fixes #323114.
14123
14124 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14127
14128 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14129
14130         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14131
14132 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14133
14134         * mini.c: run type ctor before allocating an object, not only
14135         when running it's constructor method (fixes at least part of bug #342507).
14136
14137 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14138         
14139         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14140         
14141         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14142         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14143         function.
14144
14145         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14146         mono_generic_class_init_trampoline () the same as it is done with the other
14147         trampolines.
14148
14149         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14150         aot-runtime.c aot-compiler.c: Implement AOT support.    
14151
14152 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14153
14154         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14155         build for archs which don't have the vtable trampoline defined
14156         yet.
14157
14158 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14161
14162         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14163
14164         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14165
14166         * tramp-<ARCH>.c: Use the new helper function.
14167
14168 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14169
14170         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14171         trampoline call, which takes a vtable argument.
14172
14173         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14174         OP_TRAMPCALL_VTABLEs like other calls.
14175
14176         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14177         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14178         call.  Implemented a support function which fetches the vtable
14179         from a register set.
14180
14181         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14182         Implemented a generic class init trampoline, using the
14183         OP_TRAMPCALL_VTABLE opcode.
14184
14185         * mini.c: Implemented static field access when sharing generic
14186         code.  This implies initing the class using the new
14187         OP_TRAMPCALL_VTABLE call.
14188
14189 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14190
14191         * mini.c: Don't compile methods with sharing enabled if their
14192         classes are disabled for sharing.
14193
14194 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14197         opcodes. Fixes #346563.
14198
14199         * objects.cs: Add a new test.
14200
14201         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14202
14203         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14204         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14205
14206 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14209
14210 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14211
14212         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14213         code stream.
14214
14215 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14218
14219         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14220         optimization in the AOT case.
14221         
14222 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14223
14224         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14225         
14226         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14227
14228         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14229
14230         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14231
14232         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14233         is created by the inlined delegate ctor.
14234
14235         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14236
14237         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14238
14239 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14240
14241         * cpu-x86.md: Fix the length of ckfinite.
14242
14243 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14244
14245         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14246         
14247         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14248         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14249
14250         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14251
14252         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14253         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14254
14255 2007-11-28  Martin Baulig  <martin@ximian.com>
14256
14257         * mini-x86.c
14258         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14259         after creating the trampoline.
14260
14261 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14262
14263         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14264
14265         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14266         the same version.
14267
14268         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14269         instead of the calling method to help AOT.
14270
14271         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14272
14273 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14274
14275         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14276         is defined.
14277
14278 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14279
14280         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14281         
14282         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14283         (encode_method_ref): No need to handle generic method definitions specially.
14284
14285         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14286
14287         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14288         decode_klass_info.
14289
14290         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14291         encode_klass_info.
14292         (compile_method): Enable generic sharing.
14293
14294 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14297         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14298
14299         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14300         generic code.
14301
14302         * mini-trampolines.c: Fix a warning.
14303
14304         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14305         NEW_PCONST.
14306         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14307         (generic_class_is_reference_type): Remove unused function.
14308
14309         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14310         in the generic vtable trampoline case.
14311
14312         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14313         
14314         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14315         return an AOT method based on a vtable slot.
14316
14317         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14318
14319         * mini.c (mini_get_vtable_trampoline): Export this.
14320
14321 2007-11-22  Martin Baulig  <martin@ximian.com>
14322
14323         * debug-debugger.h
14324         (MonoDebuggerInfo): Move `debugger_version' up.
14325
14326 2007-11-22  Martin Baulig  <martin@ximian.com>
14327
14328         * mini-amd64.c
14329         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14330
14331         * mini-trampolines.c
14332         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14333         after compiling the method.
14334
14335 2007-11-20  Martin Baulig  <martin@ximian.com>
14336
14337         * debug-mini.c
14338         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14339         (mono_debugger_remove_breakpoint): Likewise.
14340         (mono_debugger_check_breakpoints): Likewise.
14341
14342         * debug-debugger.c: Implement the new breakpoint interface here.
14343
14344 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14345
14346         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14347         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14348
14349         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14350
14351 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14352
14353         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14354
14355         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14356         mini.c.
14357
14358         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14359         mini.c.
14360
14361         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14362         returning a vtype in a register.
14363
14364         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14365         here from the arch specific code.
14366
14367         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14368         mini.c.
14369
14370         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14371         (mono_arch_emit_prolog): Increment maximum prolog size.
14372
14373         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14374         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14375
14376         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14377         MonoGenericSharingContext.
14378
14379         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14380         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14381
14382 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14383
14384         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14385         which extract fields out of the runtime generic context.  Full
14386         sharing of the NEWARR opcode.
14387
14388 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14389
14390         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14391         --enable-minimal=ssa.
14392
14393 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14394
14395         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14396         mono_marshal_get_delegate_invoke () signature change.
14397
14398 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14399
14400         * mini.c: Removed the shared context in favor of the generic
14401         sharing context.  Allocate the MonoJitInfo structure with room for
14402         the generic sharing context if it's needed.
14403
14404         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14405         domain-internals.h now.
14406
14407         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14408
14409         * generic-sharing.c: Several changes for working without a shared
14410         context and instead operating on open types instead.
14411
14412 2007-11-12  David S. Miller  <davem@davemloft.net>
14413
14414        * inssel-sparc.brg: Fix double instruction emit.
14415
14416 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14417
14418         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14419         Get/Set/Address methods.
14420         
14421         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14422         mono_marshal_get_delegate_invoke signature change.
14423
14424 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14425
14426         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14427         This can happens with dynamic methods. Fixes the other bug in #322722.
14428
14429 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14430
14431         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14432         BX call sequence.
14433
14434         * mini-arm.c (arm_patch): Implement patching of BX call
14435         sequence. Fixes one of the bugs in #322722.
14436
14437 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14438
14439        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14440        under Linux.  We only need to flush every 32-byte cache line.    
14441
14442 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14443
14444         * mini.c:
14445         move_basic_block_to_end: Add branches when needed, eventually creating
14446         a new BB.
14447         optimize_branches: added a parameter that tells if it's ok to create
14448         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14449         and avoid calling move_basic_block_to_end when it's not ok.
14450         Fixes bug 318677.
14451
14452 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14453
14454         * mini.c: Abort inlining call to InitializeArray if something
14455         looks wrong.  Let the icall handle it, which now has proper safety
14456         checks.
14457
14458 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14459
14460         * mini.c (mono_spill_call): add support for soft-float.
14461
14462         * mini.c (mono_method_to_ir): add support for soft-float
14463         to inlined functions that return float.
14464
14465         * mini.c (mono_method_to_ir): add support for soft-float
14466         to cee_stsfld opcode on float fields.
14467
14468 2007-11-05  Geoff Norton  <gnorton@novell.com>
14469
14470         * mini-x86.h: Fix the structure access for X86 Leopard.
14471
14472
14473 2007-11-05  Martin Baulig  <martin@ximian.com>
14474
14475         * mini-trampolines.c
14476         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14477         after compiling the method to notify the debugger.
14478
14479 2007-11-05  Martin Baulig  <martin@ximian.com>
14480
14481         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14482
14483 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14484
14485         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14486         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14487
14488 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14489
14490         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14491         native-to-managed wrappers.
14492         
14493 2007-11-01  Geoff Norton  <gnorton@novell.com>
14494
14495         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14496         members.
14497
14498 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * mini.c, mini-x86.c: when getting back from unmanaged code
14501         to managed via a marshaled delegate we also need to set the
14502         right domain.
14503
14504 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14505
14506         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14507         for amd64.
14508
14509 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14510
14511         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14512         let the debugger or other external agents to tell the JIT when
14513         a sw breakpoint has been inserted in the code that the JIT needs
14514         to be able to inspect.
14515
14516 2007-10-31  Martin Baulig  <martin@ximian.com>
14517
14518         * debug-debugger.h
14519         (MonoDebuggerInfo): Remove `runtime_class_init'.
14520
14521 2007-10-30  Martin Baulig  <martin@ximian.com>
14522
14523         * debug-mini.h
14524         (mono_debugger_thread_created): Added `MonoThread *' argument.
14525         (mono_debugger_extended_notification): New public method.
14526         (mono_debugger_trampoline_compiled): New public method.
14527
14528         * debug-mini.c
14529         (MonoDebuggerThreadInfo): Added `thread' and
14530         `extended_notifications' fields.
14531
14532         * debug-debugger.c
14533         (debugger_executable_code_buffer): New static variable.
14534
14535         * debug-debugger.h
14536         (MonoDebuggerInfo): Added `executable_code_buffer',
14537         `executable_code_buffer_size', `breakpoint_info_area',
14538         `breakpoint_table' and `breakpoint_table_size'.
14539
14540 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14541
14542         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14543         that IP  either is an unused value or the vtable pointer. IMT 
14544         calls use vtable + offset now. Reduced by almost half the size
14545         of IMT entries.
14546
14547 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14548
14549         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14550         defines to access param registers. Replace long usage with
14551         gsize as sizeof(long) != sizeof(void*) on Win64.
14552
14553         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14554         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14555         instead of non-existant _GetAddressOfReturnAddress.
14556
14557         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14558         param registers. Save/restore %rdi and %rsi in MonoLMF.
14559
14560         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14561         param registers. Modify (throw_exception) signature to take 
14562         %rdi and %rsi on Win64. 
14563
14564         Code is contributed under MIT/X11 license.
14565
14566 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14567
14568         * helpers.c: unlink debugging output files.
14569
14570 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * mini.c: Move mono_create_ftnptr () to object.c.
14573
14574 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14575
14576         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14577         optional. This function can now be used to disassemble code generated
14578         outside the JIT such as trampolines and IMT thunks.
14579
14580         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14581
14582         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14583         vtable pointer from a ldr instruction.
14584
14585         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14586         new IMT call sequence.
14587
14588         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14589         call sequence for interface invocations.
14590
14591         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14592         for imt support. This function is empty since IMT on ARM requires no
14593         special handling on the IR side.
14594
14595         * mini-arm.c (mono_arch_find_imt_method): added, required for
14596         imt support.
14597
14598         * mini-arm.c (mono_arch_find_this_argument): added, required
14599         for imt support.
14600
14601         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14602         a ldr instruction to load a value stored in the code stream.
14603
14604         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14605         for imt support.
14606
14607
14608 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14609
14610         * mini.c (mini_init): Install the jump trampoline callback.
14611
14612 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini-trampolines.c: handle synchronized methods with the common
14615         vtable trampoline (bug #335601).
14616
14617 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14618
14619         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14620
14621         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14622         64 bit platforms.
14623
14624         * mini-ia64.h mini-ia64.c: Add support for IMT.
14625
14626         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14627         prolog. Fixes #331958.
14628
14629 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14630
14631         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14632
14633 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14634
14635         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14636         trampoline.
14637
14638 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14639
14640         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14641         trampoline.
14642
14643 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14644
14645         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14646         trampoline.
14647
14648 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14649
14650         * mini-trampolines.c: changed the magic rampoline to understand
14651         the common vtable trampoline method: the method to invoke is
14652         determined by the vtable displacement of the call.
14653
14654 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * mini.c, mini.h: register the common vtable trampoline if the
14657         architecture supports it.
14658
14659 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14660
14661         * cpu-amd64.md: use the correct max length for tls_get.
14662
14663 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14664
14665         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14666         CEE_STELEM_ANY. Fixes #333696.
14667
14668 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * exceptions-x86.c: provide more graceful handling of the case where
14671         we followed a bogus function pointer from managed code (bug #332866).
14672
14673 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14674
14675         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14676         replaces the generic_shared flag and will carry more information
14677         in the future.
14678
14679         * generic-sharing.c: Added mini_type_stack_size() which allows
14680         allows open types if given a generic sharing context.
14681         mini_get_basic_type_from_generic() takes a
14682         MonoGenericSharingContext* instead of a MonoCompile* now.
14683
14684         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14685         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14686         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14687         changes above.  Just passing arguments through to the right
14688         places.
14689
14690 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14691
14692         * mini-arm.c: unify the call emission to emit_code_seq().
14693
14694 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14695
14696         * tramp-arm.c: reduced the trampoline size.
14697
14698 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14699
14700         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14701         variable handling out of arch-specific code.
14702
14703 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14704
14705         * mini-arm.c: implemented fast delegate dispatch.
14706
14707 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14708
14709         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14710         that fp elimination is turned off if the space required by locals is too
14711         big. Fixes #331958.
14712
14713 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14714
14715         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14716         ARM to the new style trampoline.
14717
14718 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14719
14720         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14721
14722         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14723
14724 2007-10-09  Martin Baulig  <martin@ximian.com>
14725
14726         * debug-debugger.h
14727         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14728         `field_info_offset_offset'.     
14729
14730 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14733         removed more internal usage of the r11 register and made it available
14734         to the register allocator.
14735
14736 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14737
14738         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14739         when sharing generics and treat type variables as references.
14740
14741 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini-ppc.c: started removing the internal uses of register r11
14744         to eventually allow the register allocator to manage it as an
14745         additional available register.
14746
14747 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14748
14749         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14750
14751 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14752
14753         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14754         specific trampolines as they are not performance critical as a jump
14755         target (maybe align as before only for AOT code?). This saves about
14756         200 KB of native code on x86 for monodevelop startup.
14757
14758 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14759
14760         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14761         monodevelop startup.
14762
14763 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14764
14765         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14766
14767         * mini-sparc.h mini-sparc.c: Implement IMT support.
14768
14769         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14770         its smaller and doesn't clobber sparc_g1.
14771
14772         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14773
14774 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14775
14776         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14777
14778 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14779
14780         * mini-ppc.c: implemented fast delegate invocation.
14781
14782 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14783
14784         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14785
14786 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14789         code to the new style trampoline in preparation for IMT support.
14790
14791 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14794         systems already. This also reduces the specific trampiline sizes and
14795         prepares for the use of r12 as the IMT identifier register.
14796
14797 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14798
14799         * mini-mips.h: endianess fix (simplified from a patch by
14800         Thomas Kunze <thommy@tabao.de>, bug #323737).
14801
14802 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14803
14804         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14805         to access ucontext fields and enable netbsd support
14806         (partially from Magnus Henoch <mange@freemail.hu>).
14807
14808 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14809
14810         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14811         use the preprocessor from the CPP env var if it is set.
14812
14813 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14814
14815         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14816         code, before interface_offset gets used.
14817
14818 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14821         mono_class_setup_vtable () before accessing klass->vtable.
14822
14823 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14824
14825         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14826         hackish.
14827
14828 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14829
14830         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14831         IMT slots (this saves hundreds of KB of memory in programs like
14832         IronPython and Monodevelop).
14833
14834 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * mini.c: print the delegate counter.
14837
14838 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * mini-x86.c: make it easier to enable the debugging code for IMT
14841         slots.
14842
14843 2007-09-28  Martin Baulig  <martin@ximian.com>
14844
14845         * debug-debugger.h
14846         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14847         `mono_method_klass_offset' and `mono_method_token_offset'.
14848
14849 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14850
14851         * mini.c: First generics sharing implementation.  Can only share
14852         in very simple cases.  If sharing doesn't work it falls back to
14853         dedicated compilation.
14854
14855         * mini.h: Flag in MonoCompile to specify whether generic
14856         compilation is shared.  Flags enum for marking which generic inst
14857         of a context is used.  Prototypes for helper functions.
14858
14859         * generic-sharing.c: Helper functions for generic method sharing.
14860
14861         * optflags-def.h: Optimization flag (gshared) for enabling generic
14862         method sharing added.
14863
14864         * Makefile.am: generic-sharing.c added.
14865
14866 2007-09-19 Daniel Nauck <dna@mono-project.de>
14867
14868         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14869
14870 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14871         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14872         fixes bug 325507.
14873
14874 2007-09-19  Martin Baulig  <martin@ximian.com>
14875
14876         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14877         mono_debug_cleanup() is now part of mono_cleanup().
14878
14879 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14880
14881         * driver.c (mono_main): Fix a warning.
14882
14883 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14884
14885         * aot-compiler.c: Optimize various parts when processing large assemblies.
14886         Fixes ##325568.
14887
14888         * mini.c (mono_patch_info_hash): Improve hash function.
14889
14890 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14891
14892         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14893         
14894         Code is contributed under MIT/X11 license.
14895
14896 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14897
14898         * mini.c (mini_init): Fix a leak.
14899
14900         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14901
14902 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14903
14904         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14905
14906 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14907
14908         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14909
14910 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14911
14912         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14913         variance tests.
14914
14915         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14916
14917         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14918
14919         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14920
14921         * aot-runtime.c (decode_patch_info): Ditto.
14922
14923 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14924
14925         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14926         static case. Cache delegates in architecture specific code, 
14927         based on number of parameters.
14928         
14929         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14930         in architecture specific code, based on number of parameters.
14931         
14932         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14933         caching happen in architecture specific code now.
14934         
14935         Code is contributed under MIT/X11 license.
14936
14937 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14938
14939         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14940         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14941         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14942
14943         Code is contributed under MIT/X11 license.
14944
14945 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14946         * mini.c: (mono_thread_abort) Fixed bug #82416.
14947
14948 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14949
14950         * mini.: hook the new managed GC allocation feature into the JIT.
14951
14952 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14953
14954         * mini.c: implementation for the new runtime tls opcode.
14955
14956 2007-09-11  Martin Baulig  <martin@ximian.com>
14957
14958         * debug-debugger.h
14959         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14960         `mono_method_inflated_offset'.
14961
14962 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14963
14964         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14965         async exceptions into a method.
14966
14967         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14968         purpose of testing whenever the unwinder works at every instruction.
14969
14970 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14971
14972         * mini.c: check accessibility of method used in ldftn (fixes
14973         bug #82635).
14974
14975 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14978
14979         * inssel.brg: Fix a warning.
14980
14981 2007-09-03  Martin Baulig  <martin@ximian.com>
14982
14983         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14984         now takes the `main_method' as argument.
14985
14986 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14987
14988         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14989
14990 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14991
14992         * driver.c: include the cil-coff.h header on Windows.
14993         
14994         Code is contributed under MIT/X11 license.
14995
14996 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14997
14998         * mini.c, driver.c: don't include the cil-coff.h header.
14999
15000 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15001
15002         * mini.c: flag places that needs fixes fo soft-float support.
15003
15004 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15007         endian systems (partially from Dean Jenkins, bug #81924).
15008
15009 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15010
15011         * mini.c (check_linkdemand): Remove embedded reference object in
15012         call to LinkDemandSecurityException.
15013         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15014         with an IntPtr instead of a reference object.
15015
15016 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15017
15018         * mini.c (handle_initobj): Handle alignment properly.
15019
15020         * inssel.brg (mini_emit_memset): Ditto. 
15021
15022         * inssel.brg (mini_emit_memcpy): Ditto. 
15023
15024         * inssel-sparc.brg: Ditto.              
15025
15026         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15027
15028 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15029
15030         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15031         exceptions raised in unmanaged code. Fixes part of #82594.
15032
15033 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15034
15035         * mini.c (mono_method_to_ir), declsec.c
15036         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15037
15038 2007-08-22  Martin Baulig  <martin@ximian.com>
15039
15040         * debug-mini.h
15041         (MonoDebuggerThreadInfo): New typedef.
15042         (mono_debugger_thread_table): New global variable.
15043         (mono_debugger_thread_created): New public function.
15044         (mono_debugger_thread_cleanup): New public function.
15045
15046         * debug-debugger.h
15047         (MonoDebuggerInfo):
15048         - removed `get_current_thread' and `lookup_assembly'.
15049         - removed `data_table'.
15050         - added `thread_table'.
15051
15052         * mini.c
15053         (mono_thread_start_cb): Call mono_debugger_thread_created().
15054         (mono_thread_attach_cb): Likewise.
15055         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15056         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15057         initial domain.
15058
15059         * driver.c (mono_main): Move mono_debug_init() up, before calling
15060         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15061
15062 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15063
15064         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15065         together when passing several arguments of type double (gives a small
15066         speedup and saves a few bytes of generated code).
15067
15068 2007-08-20  Jb Evain  <jbevain@novell.com>
15069
15070         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15071
15072 2007-08-20  Jb Evain  <jbevain@novell.com>
15073
15074         * mini.c (mono_method_to_ir): throw MethodAccessException
15075         and FieldAccessException instead of InvalidProgramException.
15076
15077 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15078
15079         * mini.c: CoreCLR security checks.
15080
15081         * mini.h: Removed MonoSecurityMode (moved to
15082         metadata/security-manager.h) and mono_security_mode global var
15083         (replaced by set/get functions in security-manager.h).
15084
15085         * driver.c: Added "core-clr-test" security mode for testing.  Used
15086         set-function for setting security mode.
15087
15088 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15089
15090         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15091         the new jit_info_table.
15092
15093         * driver.c: Test code for the new jit_info_table (enabled by the
15094         define MONO_JIT_INFO_TABLE_TEST).
15095
15096 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15099         detection of call <REG> instruction sequence. Fixes build on freebsd.
15100
15101 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15102
15103         * mini-exceptions.c: Fix a warning.
15104
15105 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15106
15107         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15108         stack overflow handling code on amd64 too.
15109
15110         * mini-exceptions.c (mono_setup_altstack): Make this use 
15111         mono_thread_get_stack_bounds ().
15112
15113         * mini-x86.h: Disable sigaltstack on solaris x86.
15114
15115 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15118
15119 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15120
15121         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15122
15123 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15124
15125         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15126
15127         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15128
15129 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15130
15131         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15132         due to alignment.
15133
15134 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15135
15136         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15137         to be emitted (bug #82281).
15138
15139 2007-08-01  Martin Baulig  <martin@ximian.com>
15140
15141         Merged the `debugger-dublin' branch.
15142
15143         * debug-debugger.h (MonoDebuggerInfo):
15144         Removed the `old_*' compatibility entries.
15145         Added `debugger_version' and `data_table'.
15146         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15147         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15148
15149         * debug-mini.c
15150         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15151         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15152         instead of a `gconstpointer'.
15153         (mono_debugger_insert_method_breakpoint): Return a
15154         `MonoDebugMethodAddressList *'.
15155
15156 2007-06-28  Martin Baulig  <martin@ximian.com>
15157
15158         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15159
15160 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15161
15162         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15163         __builtin_frame_address () since it is broken on older gcc versions.
15164
15165 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15168         on the stack overflow handling and made the managed stack overflows
15169         catchable in most cases using soft guard pages.
15170         * exceptions-x86.c: added code to restore the protection in the soft
15171         guard pages at the end of exception handling.
15172
15173 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15174
15175         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15176
15177 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15178
15179         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15180         exception handling.
15181
15182 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15183
15184         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15185         signal handling support until it has been ported to the new mechanism.
15186         * mini.c: fixed stack overflow detection and use the new
15187         architecture code  to handle signals on the altstack.
15188
15189 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15190
15191         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15192         stack overflows on the alt stack.
15193
15194 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15195
15196         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15197         stack overflows on the alt stack.
15198
15199 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15200
15201         * exceptions-ppc.c: cleanup preparing for altstack support.
15202
15203 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15204
15205         * exceptions-arm.c: cleanup preparing for altstack support.
15206
15207 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15208
15209         * mini.c (print_jit_stats): Output hazard pointer stats.
15210
15211 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15212
15213         * driver.c, mini.c: Replaced security mode flags with a single
15214         enum variable.
15215
15216 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15217
15218         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15219
15220 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15221
15222         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15223         (which doesn't do anything yet) for activating Core CLR
15224         (Silverlight) security.
15225
15226 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15227
15228         * mini-codegen.c: work around a possible gcc bug on arm.
15229
15230 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15231
15232         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15233         message for platforms that don't support AOT compilation.
15234
15235 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15236
15237         * mini.h, mini.c, driver.c: temporary smcs hack.
15238
15239 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15240
15241         * mini-arm.h, mini-arm.c: arm EABI fixes.
15242
15243 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15244
15245         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15246         case.
15247
15248         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15249         trampolines taking a method argument.
15250
15251         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15252
15253         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15254         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15255
15256         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15257         JIT compilation throws an exception. Fixes #82050.
15258
15259 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15260
15261         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15262         with the MONO_EXCEPTION_ defines.
15263
15264 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15265
15266         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15267         #82117.
15268         
15269         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15270         the cause of an assertion.
15271
15272 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15273
15274         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15275         removed.
15276
15277 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15278
15279         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15280         assert. Should fix #82103.
15281
15282 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15283
15284         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15285         here too. Fixes #82095.
15286
15287         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15288         addresses.
15289
15290         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15291
15292         * mini-amd64.h: Enable IMT for amd64.
15293         
15294         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15295
15296 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15297
15298         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15299
15300 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15301
15302         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15303         as soon as check_linkdemand sets an exception_type.
15304
15305 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15306
15307         * mini-x86.c: fixed offsets for IMT call sequence.
15308         * mini-x86.h: enable IMT again.
15309
15310 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15311
15312         * trace.c (mono_trace_enter_method): Decode MonoType too.
15313
15314         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15315
15316         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15317
15318         * mini-amd64.c: Add preliminary IMT implementation.
15319         
15320 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15321
15322         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15323         understand the new IMT-base interface invocation (thanks to
15324         Daniel Nauck for the report and the remote debugging session).
15325
15326 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15327
15328         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15329
15330 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15331
15332         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15333
15334 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15335
15336         * mini-trampolines.c: implement AOT IMT support.
15337         * mini-x86.h: enable IMT support for wider testing.
15338
15339 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15340
15341         * inssel.brg (emit_imt_argument): Add aot support here.
15342
15343         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15344
15345 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15346
15347         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15348         of the IMT implementation, partially from massi, with my
15349         implementation of the bsearch sequence. Disabled by default until
15350         the AOT code is implemented.
15351
15352 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15353
15354         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15355
15356         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15357
15358 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15359
15360         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15361         arch-independent IMT JIT code from Massimiliano
15362         Mantione (massi@ximian.com) with small cleanups from me.
15363
15364 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15365
15366         * Makefile.am: fix svn invocation to get the svn revision to be
15367         independent of the local language (build fix).
15368
15369 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15370
15371         * mini.c (inline_method): Reset cfg->exception_type if the
15372         inlining is aborted.  Fixes: 82049.
15373
15374 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15375
15376         * mini.c: remove assert from exception handling code when exception_ptr
15377         is not set.
15378
15379 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15380
15381         * mini.c (mono_codegen): Add an assert.
15382
15383         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15384         enter and leave code.
15385         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15386
15387 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15388
15389         * mini-ppc.c: fixed memory corruption for localloc(0)
15390         (bug #81852).
15391
15392 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15393         
15394         * mini.c: Fix warnings.
15395
15396 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15397
15398         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15399         to emit better double->int conversions.
15400
15401 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15402
15403         * mini.c: the provided Min/Max optimizations are valid for unisgned
15404         ints.
15405
15406 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15407
15408         * 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
15409
15410 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15411
15412         * mini.c (mono_running_on_valgrind): Add support for reporting the
15413         method and  its boundaries to valgrind.
15414
15415 2007-06-28  Martin Baulig  <martin@ximian.com>
15416
15417         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15418
15419 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15422
15423         * generic.2.cs: Add new test case.
15424
15425 2007-06-25  Martin Baulig  <martin@ximian.com>
15426
15427         Merged the `debugger-dublin' branch.
15428
15429         * debug-mini.c
15430         (mono_debugger_insert_method_breakpoint): New public method.
15431         (mono_debugger_remove_method_breakpoint): Likewise.
15432         (mono_debugger_check_breakpoints): New static method.
15433         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15434
15435         * debug-debugger.h (MonoDebuggerInfo):
15436         Renamed (to keep backward compatibility in the vtable):
15437         `insert_breakpoint' -> `old_insert_breakpoint'.
15438         `remove_breakpoint' -> `old_remove_breakpoint'.
15439         `create_string' -> `old_create_string'.
15440         `lookup_class' -> `old_lookup_class'.
15441         `lookup_type' -> removed; changed into a dummy field.
15442         `lookup_assembly' -> `old_lookup_assembly'.
15443         Added (same functionality, but different signature):
15444         `create_string', `lookup_class', `lookup_assembly'
15445         Added new:
15446         `get_method_addr_or_bpt', `remove_method_breakpoint',
15447         `runtime_class_init'.
15448
15449         * debug-debugger.c: Merged the `debugger-dublin' branch.
15450
15451 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15452
15453         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15454         well.
15455         (peephole_pass): Likewise.
15456
15457 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15458
15459         * driver.c: hopefully make setaffinity work also for ancient
15460         versions of linux.
15461
15462 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15463
15464         * driver.c : win32 build fix.
15465
15466 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15467
15468         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15469         processor if it is set.
15470
15471 2007-06-21  Martin Baulig  <martin@ximian.com>
15472
15473         * debug-mini.h: New file.
15474
15475         * debug-mini.c
15476         (mono_debugger_insert_breakpoint_full): Moved here from
15477         ../metadata/mono-debug-debugger.c.
15478         (mono_debugger_remove_breakpoint): Likewise.
15479         (mono_debugger_breakpoint_callback): Likewise.
15480
15481 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15482
15483         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15484         changes in MonoGenericClass.
15485
15486 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15487
15488         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15489
15490 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15491
15492         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15493         removal of MonoGenericMethod.
15494
15495 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15496
15497         * mini-exceptions.c: hooks for the exception events profiling API.
15498
15499 2007-06-14  Randolph Chung  <tausq@debian.org>
15500
15501         * Makefile.ma: Add hppa target.
15502         * mini-arch.h: Include mini-hppa.h
15503         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15504         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15505         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15506
15507 2007-06-14  Randolph Chung  <tausq@debian.org>
15508
15509         * inssel.brg: Add rules for "chained" compare-branch operations so that
15510         a single compare op can affect multiple branches.  Adjust cost for
15511         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15512         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15513         cost for some rules so that they can more easily be overridden by
15514         per-arch rules (with fixes from lupus).
15515         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15516
15517 2007-06-13  Randolph Chung  <tausq@debian.org>
15518
15519         * mini-ops.h: Reorder branch ops so that they match the order of the
15520         corresponding CEE_* ops.  The code expects them this way.
15521         Add new ops for HPPA target.
15522         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15523
15524 2007-06-13  Randolph Chung  <tausq@debian.org>
15525
15526         * mini-exceptions.c: Handle cases where the stack grows towards
15527         larger addresses.
15528         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15529
15530 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15531
15532         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15533         counter.
15534         * driver.c: explain where a non-matching corlib is found.
15535
15536 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15537
15538         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15539
15540 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15541
15542         * mini-exceptions.c: Generate a method profile leave event during
15543         an exception to ensure that the profiler gets notified.
15544
15545 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15546
15547         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15548         branch.
15549
15550         * cpu-amd64.md: Add long_and/or/xor opcodes.
15551
15552 2007-06-06  Wade Berrier  <wberrier@novell.com>
15553
15554         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15555         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15556         length of instruction shr_imm (expected 8, got 10)
15557
15558 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15559
15560         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15561
15562 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15563
15564         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15565         MonoInternalHashTable again (fixed bug in the internal hash table
15566         code).
15567
15568 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15569
15570         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15571         Have to figure out what makes it crash the SWF regression.
15572
15573 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15576
15577 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15578
15579         * mini.c: optimize out the type check when storing null in a
15580         reference array.
15581
15582 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15583
15584         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15585         MonoInternalHashTable.
15586
15587 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15588
15589         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15590         signed integer methods.
15591
15592 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15593
15594         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15595         permanently since the current approach doesn't work.
15596
15597 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15598
15599         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15600         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15601
15602 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15605         the sreg2==rdx case.
15606         
15607         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15608         account if it contains a rex prefix.
15609         (peephole_pass): Handle OP_FMOVE as well.
15610
15611 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15612
15613         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15614         as it causes regressions.
15615
15616 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15617
15618         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15619         static case as well.
15620
15621         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15622
15623         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15624         (mono_arch_get_this_arg_from_call): Ditto.
15625
15626         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15627
15628         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15629         invoke_impl field.
15630
15631         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15632         (mono_arch_get_this_arg_from_call): Ditto.
15633
15634         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15635         
15636         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15637         try to create optimized invoke code and use that for further invocations. 
15638         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15639
15640         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15641
15642 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15643
15644         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15645         sealed classes or methods.
15646         *devirtualization.cs: tests for the new optimization
15647
15648 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15649
15650         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15651         by the update_volatile () function.
15652
15653 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15656         require it.
15657
15658         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15659
15660 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15661
15662         * mini.c: Add configure checks for header files.
15663         * mini-x86.c: Add configure checks for header files.
15664         * trace.c: Add configure checks for header files.
15665         * aot-runtime.c: Add configure checks for header files.
15666         * aot-compiler.c: Add configure checks for header files.
15667         * driver.c: Add configure checks for header files.
15668         * mini-codegen.c: Add configure checks for header files.
15669         
15670         Code is contributed under MIT/X11 license.
15671
15672 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15673
15674         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15675         icompare_imm -128 + op_iclt. Fixes #81703.
15676
15677 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15678
15679         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15680
15681 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15682
15683         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15684         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15685         so that all isinst checks now use "interface_bitmap".
15686
15687 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * cpu-amd64.md (jmp): Fix a warning.
15690
15691         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15692
15693         * basic.cs: Add new regression test.
15694
15695         * basic.cs: Remove test which is now in basic-long.cs.
15696
15697         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15698
15699         * basic-long.cs: Add new test.
15700         
15701 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15704
15705 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15706
15707         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15708
15709         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15710         places.
15711         
15712         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15713         throwing code a bit.
15714
15715         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15716         the exception throwing code a bit.
15717
15718         * mini-x86.c (get_call_info): Allocate result from a mempool.
15719
15720 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15721
15722         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15723
15724         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15725
15726         * mini.h (MonoCompile): Add 'token_info_hash' field.
15727
15728         * mini.c: Save token->method associations during compilation so the AOT 
15729         compiler can use it.
15730         
15731         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15732         which reference generic classes and methods.
15733
15734 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15735
15736         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15737
15738         * aot-compiler.c (compile_method): Fix a typo in a comment.
15739
15740         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15741
15742         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15743         everything generic.
15744
15745         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15746
15747 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15748
15749         * mini.h (MonoCompile): Add 'args' field.
15750
15751         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15752         into cfg->args.
15753
15754         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15755
15756 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15757
15758         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15759
15760         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15761
15762         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15763         opcodes for some opcodes.
15764
15765         * mini.h *.brg *.c: Use the new opcodes.
15766
15767 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15768
15769         * mini.h: Bumped aot revision.
15770
15771         * inssel.brg: modified code generation of type checks for interfaces
15772         to use the new "MonoClass.interface_bitmap" instead of the old
15773         "MonoClass.interface_offsets".
15774
15775 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15776
15777         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15778
15779 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15780
15781         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15782         64 bit platforms.
15783
15784 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15785
15786         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15787
15788 2007-04-27  Wade Berrier  <wberrier@novell.com>
15789
15790         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15791         mini.h) to fix build.
15792
15793 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15796         
15797         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15798         causes the corlib unit tests to fail.
15799
15800 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15801
15802         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15803
15804         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15805
15806         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15807         opcodes to the comparison relations.
15808
15809         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15810         opcodes to their types.
15811         
15812         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15813
15814         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15815         it in cfg->arch.cinfo.
15816
15817         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15818
15819         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15820         cfg->cil_offset_to_bb.
15821
15822 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15823
15824         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15825         created becase of initlocals.
15826
15827 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15830         Sergey Tikhonov <tsv@solvo.ru>.
15831
15832 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15833
15834         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15835
15836 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15837
15838         * cpu-s390.md (break): Correct the length of break instruction.
15839
15840 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15841
15842         * mini.c: fix a couple of soft-float issues and comments.
15843
15844 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15845
15846         * trace.c (is_filenamechar): - is also a filename char.
15847
15848 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15849
15850         * mini-s390.c: Correct checking for enum type in return value processing.
15851
15852 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15853
15854         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15855         (version.h): Makefile is in the build directory.
15856
15857 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15858
15859         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15860
15861 2007-04-11  Martin Baulig  <martin@ximian.com>
15862
15863         * mini.c (can_access_member): Fix handling of generic classes;
15864         fixes #81259.
15865
15866 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15867
15868         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15869
15870 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15871
15872         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15873
15874 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15875
15876         * mini-codegen.c: make sure the right spill amount is
15877         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15878
15879 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15880
15881         * mini-ppc.c: fixes for the fp_branch_nan test.
15882
15883 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15884
15885         * basic.cs: Comment out new test which still fails on ia64.
15886
15887 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15888
15889         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15890
15891 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15892
15893         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15894
15895 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15896
15897         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15898         on 64 bit machines. Fixes part of #80738.
15899
15900         * basic.cs: Add regression test.
15901
15902 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * inssel.brg basic.cs: Revert previous change to fix build.
15905
15906         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15907         platforms.
15908         
15909         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15910
15911         * basic.cs: Add new regression test.
15912
15913 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15916         many arguments.
15917
15918 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15919
15920         * cpu-s390x.md: Correct length of break instruction.
15921
15922 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15923
15924         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15925         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15926
15927 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15928
15929         * *.c: Begin WIN64 port.
15930         * mini.c:  Use correct register in profiler.
15931         * mini-amd64.c: No inline assembly on Win64.
15932         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15933         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15934         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15935         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15936         mono_arch_ip_from_context for Win64.
15937         
15938         Contributed under MIT/X11 license.
15939
15940 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15941
15942         * exceptions-amd64.c (seh_handler): Ditto.
15943
15944         * exceptions-x86.c (seh_handler): Fix a memory leak.
15945
15946 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15947
15948         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15949         mini-s390x.c: fixed peephole optimizations to deal
15950         correctly with 1 and 2 byte reload avoidance.
15951
15952 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15953
15954         * cpu-s390.md, cpu-s390x.md: update localloc length.
15955
15956 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15957
15958         * cpu-g4.md: added missing descriptions.
15959
15960 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15961
15962         *  Makefile.am: Add support so the tail tests are not executed on
15963         PowerPC as that is a known limitation of the PowerPC port.
15964
15965 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15966
15967         * runmdesc.bat:  Move to msvc directory.
15968         
15969 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15970
15971         * runmdesc.bat:  Run executable that was produced by the current
15972         target and sent via an argument.
15973         
15974 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15977         #81102.
15978
15979         * generics.2.cs: Add regression test.
15980
15981 2007-03-09  Wade berrier  <wberrier@novell.com>
15982
15983         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15984
15985 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15986
15987         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15988         AOT code depends on this.
15989
15990 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15991
15992         * mini.c: more precise tracking of types in the eval stack
15993         (part of fix for bug #81044).
15994
15995 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15996
15997         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15998
15999         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16000
16001 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16002
16003         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16004
16005         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16006
16007 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16008
16009         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16010         a pointer on 64 bit systems. Fixes #80190.
16011
16012         * iltests.il: Add new regression test.
16013
16014 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16015
16016         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16017
16018 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16019
16020         * trace.c: Remove an erroneous alignemnt check when tracing.
16021           Fixes --trace on OSX86.
16022
16023 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * mini-$(arch).h: initialize SP in context for all the archs.
16026
16027 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16028
16029         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16030         regressions in the thread tests.
16031
16032 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16033
16034         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16035         - fixed implementation of LOCALLOC opcode
16036         - implemented non-un compare for floats
16037         - code cleanup
16038         - implementation of FDIV and CKFINITE opcodes
16039         - fixes for latest mono updates
16040         - additional arch opcodes
16041
16042 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16043
16044         * Makefile.am: simplify and merge rules for cross-compilation.
16045
16046 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16047
16048         * local-propagation.c: Actually *apply* the fix for bug 80591...
16049
16050 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16051
16052         * mini-exceptions.c: backuot part of the last change
16053         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16054
16055 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16056         * inssel.brg: Fix bug 59286.
16057
16058
16059 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16060
16061         * mini-exceptions.c: patch from Zoltan to correctly check for
16062         stack boundaries (using the stack register, not the frame register),
16063         fixes bugs #80724, #79717.
16064
16065 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16066
16067         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16068         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16069
16070         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16071         presence of frame pointer elimination.
16072
16073 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16074         
16075         * mini-x86.h: NetBSD UCONTEX_REG defines.
16076
16077 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16078
16079         * inssel-amd64.brg: Fix amd64 build.
16080
16081 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16082
16083         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16084         on amd64.
16085
16086 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16087
16088         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16089         ends.
16090
16091         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16092
16093 2007-01-30 Mark Mason <mason@broadcom.com>
16094
16095            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16096            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16097            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16098            beginning support for CEE_JMP [not quite working yet]
16099            * tramp-mips.c: LMF handling now works
16100         
16101 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16102
16103         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16104
16105         * mini.h (NULLIFY_INS): New macro.
16106
16107 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16108
16109         * mini.c: statistical profiler fix for windows, patch
16110         from Tor Lillqvist (tml@novell.com).
16111
16112 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16113         * local-propagation.c: Fix bug 80591.
16114
16115 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16116
16117         * Makefile.am: put back the --export-dynamic option as with
16118         the previous gmodule flags (thanks to Robert Jordan).
16119
16120 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16121
16122         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16123
16124         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16125         simplify and speed up the local register allocator. Also rename some fields
16126         like iassign->vassign.
16127         
16128         * regalloc.c: Remove some functions which are no longer used since their
16129         inlined version is in mini-codegen.c.
16130         
16131         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16132
16133         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16134
16135 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16136
16137         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16138         narrowing. Fixes #80622.
16139
16140         * iltests.il: Add new regresssion test. 
16141
16142 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16143
16144         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16145         debug-debugger.c, debug-debugger.h: warning fixes.
16146         * driver.c: updated copyright year and made it fit in one line.
16147
16148 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16149
16150         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16151
16152 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16153
16154         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16155
16156         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16157
16158         * iltests.il: Add new test for bug #80507.
16159
16160 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16161
16162         * mini-arm.h: use soft-float also on vfp for now.
16163
16164 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16165
16166         * mini.c: fix some more soft-float issues.
16167
16168 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16169
16170         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16171
16172 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16173         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16174         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16175         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16176
16177 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16178
16179         * mini-arm.c: typo fix.
16180
16181 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16182
16183         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16184
16185 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16188         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16189
16190         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16191
16192         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16193
16194         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16195         
16196         * inssel.brg: Fix a warning.
16197
16198         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16199
16200         * abcremoval.c ssa.c ssapre.c: Update after this change.
16201         
16202         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16203
16204         * dominators.c (df_set): Use mono_bitset_union_fast.    
16205
16206 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16207
16208         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16209         mini-codegen.c: reduce relocations and memory usage for the cpu
16210         description.
16211
16212 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16213
16214         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16215
16216         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16217         to reduce their size.
16218
16219 2007-01-19 Mark Mason <mason@broadcom.com>
16220
16221         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16222         * mini-mips.c: more configuration macros, support long conditional branches, additional
16223         asserts, fix epilog instrumentation.
16224         * mini-mips.h: use standard stack walk
16225         * cpu-mips.md: increase size of div, rem and conditional branches
16226         
16227 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16228
16229         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16230         to cpu spec data.
16231
16232 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16233
16234         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16235         (compile_method): Ditto.
16236
16237         * aot-runtime.c (decode_klass_info): Ditto.
16238
16239         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16240         needed by the code generated by inssel.brg. Also fix a warning.
16241
16242 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16243
16244         * mini.c: deal with enums that become genericinsts by
16245         being nested in a generic class (bug #79956).
16246
16247 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16248
16249         * mini.c: match the generic definition to check for
16250         private access with generic types (bug #78431).
16251
16252 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16253
16254         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16255         to make life easier for people cross-compiling that insist on not
16256         using scratchbox.
16257
16258 2007-01-17 Mark Mason <mason@broadcom.com>
16259
16260         * inssel-long.brg: patch to deal with mips missing flags
16261         * inssel-long32-mips.brg: implement overflow checks
16262         * insset-mips.brg: implement overflow checks
16263         * mini-mips.h: implement conditional exception handling
16264         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16265           Remove unused code, minor cleanups.
16266         * exceptions-mips.c: minor cleanups
16267         * mini-ops.h: add mips conditional exception ops
16268         * cpu-mips.md: add mips conditional exception ops
16269
16270         
16271 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16272
16273         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16274         to deal with mips missing of flags.
16275
16276 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16277
16278         * exceptions-ppc.c: execute fault handlers.
16279
16280 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16281
16282         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16283
16284 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16285
16286         * mini.c: handle also floating point values in initialize_array.
16287
16288 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16289
16290         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16291         array initialization and make it conditional on the intrins option.
16292
16293 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16294
16295         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16296         relocations and put the patch info names close to the enum definition.
16297
16298 2007-01-15 Mark Mason <mason@broadcom.com>
16299
16300         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16301
16302 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16303
16304         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16305
16306 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16307
16308         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16309
16310 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16311
16312         * Makefile.am: distribute the mips sources.
16313
16314 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16315
16316         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16317         directly.
16318
16319 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16320
16321         * cpu-x86.md: back out for now as this triggers other regressions.
16322
16323 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16324
16325         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16326         to eax:edx, so ecx can't get allocated to them (bug #80489).
16327
16328 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16329
16330         * mini.c, mini-exceptions.c: enabled running fault handlers
16331         (bug #80469).
16332
16333 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16334
16335         * driver.c: If nothing fail, do not use the string "failed",
16336         because it makes it very annoying to view test result logs on the
16337         web. 
16338
16339 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16340
16341         * debug-debugger.c (mono_debugger_main): Rename "main" to
16342         "main_method" to prevent a warning.
16343
16344         Remove a warning for unused field.
16345
16346 2006-12-28  Martin Baulig  <martin@ximian.com>
16347
16348         * debug-debugger.c
16349         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16350
16351 2006-12-22  Martin Baulig  <martin@ximian.com>
16352
16353         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16354         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16355         seperate `.mdb_debug_info' section, so we can access it from the
16356         debugger even if the binary is stripped.
16357
16358         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16359         from the `.mdb_debug_info' here to prevent the linker from
16360         removing that section.
16361
16362         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16363         mdb-debug-info64.s.
16364
16365 2006-12-19  Robert Jordan  <robertj@gmx.net>
16366
16367         * mini-x86: enable the code to return small structures in
16368         registers for FreeBSD as well. Fixes bug #80278.
16369         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16370
16371 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16372
16373         * mini-x86.c: align the stack when calling the profiler
16374         function instrumenting the prolog (on OSX).
16375
16376 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16377
16378         * mini.c: emit a break opcode where Debugger.Break () is called.
16379
16380 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16381
16382         * mini.c (mono_method_to_ir): Provide useful information on this
16383         assert, to prevent others from debugging like I did.
16384
16385 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.c: enable code which was incorrectly commented
16388         (bug #80235).
16389
16390 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16391
16392         * mini-x86.c: enable on OSX, too, the code to return small
16393         structures in registers.
16394
16395 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16396
16397         * mini-x86.c: remove the use of the dynamic code manager here, too.
16398
16399 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16400
16401         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16402         mono_debugger_create_notification_function() to use
16403         mono_global_codeman_reserve () instead of a dynamic code manager.
16404
16405 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16406
16407         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16408         ves_array_element_address() jit icall and use a generated
16409         managed method instead (which is about 4 times faster for a rank 3
16410         array access).
16411
16412 2006-11-29  Mark Mason  <mason@broadcom.com>
16413
16414         * basic-calls.cs: additional tests for passing
16415         structures as function arguments.
16416
16417 2006-11-29  Mark Mason  <mason@broadcom.com>
16418
16419         * mini-mips.h: disable custom exception handling
16420         * mini-mips.c: throw/rethrow should use jalr to call
16421         exception stubs.  Fixed bug with passing structures
16422         by value. More support for tracing floating point
16423         functions.
16424
16425 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16426
16427         * mini.c: fixed typo in the soft-float ldind.r4 handling
16428         (bug #80086).
16429
16430 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16431
16432         * mini.c, mini.h, driver.c: added --runtime command line
16433         option to select a different runtime than the autodetected one.
16434         * jit.h: added API for embedders to initialize with a specific
16435         runtime version.
16436
16437 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16438
16439         * mini.c: handle also boxing of r4 values (bug #80024).
16440
16441 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16442
16443         * mini-ppc.c: force indirect calls until we reserve
16444         enough address space for all the generated code.
16445
16446 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16447
16448         * exceptions-arm.c: workaround bugs in the libc definition
16449         of struct ucontext.
16450
16451 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16452
16453         * inssel.brg: fixes from me and Mark Mason.
16454
16455 2006-11-23  Dick Porter  <dick@ximian.com>
16456
16457         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16458         semaphore display now we've fixed the initial value
16459
16460 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16461
16462         * inssel.brg: partially revert the last change to fix the build.
16463
16464 2006-11-21  Mark Mason  <mason@broadcom.com>
16465
16466         * inssel.brg: Add and use compare-and-branch macros to support
16467         architectures that do not have condition code registers (ie. MIPS).
16468         * *-mips.{c,brg,md}: Fix copyright statements
16469
16470 2006-11-20  Mark Mason  <mason@broadcom.com>
16471
16472         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16473         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16474         * mini.h: Added declaration for mono_print_ins()
16475         * mini-codegen.c: added ins_spec initializer for MIPS
16476         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16477         vreg to be virtual and hreg to be non-virtual.
16478         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16479         is not yet working/implemented correctly.
16480         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16481         non-static, fixup calls to print_ins() from other parts in the file.
16482
16483 2006-11-20  Mark Mason  <mason@broadcom.com>
16484
16485         * basic-calls.cs: added tests for passing structures as arguments
16486         to calls.
16487
16488 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16489
16490         * inssel-long32.brg: optimize signed division by power of two.
16491
16492 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * mini-arm.c: added support for interworking with thumb code
16495         (mono must be still be built using the ARM instruction encoding).
16496
16497 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16498
16499         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16500         verifier has different rules for it.   Fixes a few verifier issues
16501         in the test suite.
16502
16503         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16504         at the end, so people know what happened.
16505
16506 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16507
16508         * brach-opts.c: in optimize_exception_target() make sure we
16509         are in a catch clause (fixes bug #79871).
16510
16511 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16512
16513         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16514         more soft-float support fixes.
16515
16516 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16517
16518         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16519         that are passed half on the stack and half in registers.
16520
16521 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16524         more mips integration work from Mark E Mason 
16525         <mark.e.mason@broadcom.com>.
16526
16527 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16528
16529         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16530         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16531         tramp-mips.c: added sources for the mips port, not
16532         integrated in the build yet. Contributed by
16533         Mark E Mason <mark.e.mason@broadcom.com>.
16534
16535 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16536
16537         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16538
16539 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16540
16541         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16542         put the soft-float rules in its own file since it seems to
16543         break s390 compilation.
16544
16545 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16546
16547         * mini-arm.c: fixed wrnings.
16548
16549 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16550
16551         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16552         inssel-arm.brg: ARM support for soft-float.
16553
16554 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16555
16556         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16557         loads and stores of 32 bit fp values.
16558
16559 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16560
16561         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16562
16563         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16564         works. Fixes #79852 and #79463.
16565
16566 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16567
16568         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16569         more soft-float support WIP and fixes.
16570
16571 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16572
16573         * mini-arm.c: some VFP updates.
16574
16575 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16576
16577         * mini-exceptions.c: 0 is a valid local var offset in some
16578         architectures, don't assert (bug #78508).
16579
16580 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16581
16582         * exceptions-arm.c: fixed off by one error in stack walk code.
16583
16584 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16585
16586         * mini.h, mini.c: more precise tracking of type load exceptions.
16587
16588 2006-11-03  Robert Jordan  <robertj@gmx.net>
16589
16590         * Makefile.am: [WIN32] Add monow.exe target.
16591         * driver.c: [WIN32] Don't detach the console when debugging.
16592         Fixes bug #79797.
16593         
16594 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16595
16596         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16597
16598 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16599
16600         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16601
16602         * driver.c (mini_regression): Fix --regression with AOT.
16603
16604         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16605
16606 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16607
16608         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16609
16610         * mini-sparc.h: Don't use sigaction on sparc/linux.
16611
16612         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16613
16614         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16615
16616         * mini-exceptions.c: Add proper include files for getpid ().
16617
16618 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16619
16620         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16621         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16622         method.
16623
16624         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16625         name cache to reduce its size.
16626
16627         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16628
16629 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16632         the mono_lmf TLS variable.
16633
16634         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16635         trampoline lmf frames.  
16636
16637         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16638
16639 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16640
16641         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16642         the mono_lmf TLS variable.
16643
16644         * mini-exceptions.c: Access the LMF structure through accessors.
16645
16646         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16647         variable instead of in jit_tls->lmf.
16648
16649         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16650         
16651         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16652         trampoline lmf frames.
16653
16654         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16655
16656 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16657
16658        * mini.c trace.c mini-x86.c: Revert these too.
16659         
16660        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16661        signature change.
16662
16663 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16664
16665         * genmdesc.c: removed now dead code.
16666
16667 2006-10-09  Robert Jordan <robertj@gmx.net>
16668
16669         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16670
16671 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini.h: do not leave gaps in the opcode values.
16674
16675 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16676
16677         * jit-icalls.h: flag functions as internal here, too.
16678
16679 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16680
16681         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16682         functions with the internal attribute.
16683
16684 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16685
16686         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16687
16688 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16689
16690         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16691         for soft-float.
16692
16693 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16694
16695         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16696         tail calls as on other platforms.
16697
16698         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16699
16700         * iltests.il: Add a few tailcall tests.
16701
16702 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16703
16704         * driver.c: fix loop for old compilers (bug #79521).
16705
16706 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16707
16708         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16709
16710         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16711
16712         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16713         metadata without any code.
16714
16715         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16716         more precise debugging information using gdb.
16717
16718 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16719
16720         * inssel-ia64.brg: Make the helper methods static.
16721
16722 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16723
16724         * inssel-x86.brg: make the helper methods static.
16725
16726 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16727
16728         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16729
16730 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16731
16732         * mini.c: updates for monoburg changes.
16733         * inssel.brg: make a few helper functions static as they should.
16734
16735 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16736
16737         * Makefile.am: Move mini-codegen.c to common_sources.
16738
16739 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16740
16741         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16742         instructions.
16743         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16744         mini-ppc.h: port to use the common local register allocator.
16745
16746 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16747
16748         * mini.h: Remove the comment too then.
16749
16750 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16751
16752         * mini.h: put back backend.data which is to be used shortly and
16753         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16754         pointers on 4 byte boundaries it'd have much bigger issues running
16755         and you can ifdef it out anyway.
16756
16757 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16758
16759         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16760         MonoInst size by 4 bytes on 64 bit machines.
16761
16762 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16763
16764         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16765         replacement with more meaningful field names. Arch maintainers, please
16766         check the assigned names are good enough for your arch.
16767
16768 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16769
16770         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16771         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16772
16773 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16774
16775         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16776         relocations and memory requirements, put the optimization flags
16777         definitions in their own file.
16778
16779 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16782
16783         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16784
16785 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16786
16787         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16788
16789 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16790
16791         * inssel.brg: use the correct function to get the size of an item
16792         in an array, given an element class.
16793         * aot-compiler.c: do not access class->class_size directly.
16794
16795 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16796
16797         * mini.h, debug-mini.c: added a debugging function to print
16798         info about local variables and arguments in a jitted method.
16799
16800 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16801
16802         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16803
16804         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16805
16806 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16807
16808         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16809         inner and outer loops when passing vtypes.
16810
16811 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16812
16813         * mini-ppc.c: take into account the cpu errata for cache flushing
16814         which caused some random errors (bug #79381).
16815
16816 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16817
16818         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16819         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16820
16821 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16822
16823         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16824         loaded.
16825
16826         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16827         freebsd ports tree.
16828
16829         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16830         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16831
16832         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16833         displacement.
16834
16835 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16838
16839 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16840
16841         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16842         macro does not have to be changed during debugging.
16843
16844         * 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>.
16845
16846         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16847
16848         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16849         
16850         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16851         MONO_ARCH_NO_EMULATE_MUL is defined.
16852
16853         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16854
16855         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16856
16857         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16858
16859         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16860         
16861 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16862
16863         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16864         stuff to mini-exceptions.c where it is used.
16865
16866         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16867         setup code, the real one is in mini-exceptions.c.
16868
16869         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16870         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16871         some changes from the freebsd ports tree.
16872
16873         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16874         constants.
16875         
16876         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16877
16878 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16879
16880         * mini.c: on Linux, check for /proc to be mounted
16881         (bug# 79351, novell bug#201204).
16882
16883 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16884
16885         * mini.c: handle cases where pthread_attr_getstack() behaves
16886         incorrectly (bug #78096).
16887
16888 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16889
16890         * mini-arm.c: support larger stack frames (bug #79272).
16891
16892 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16893
16894         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16895
16896         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16897         tokens.
16898
16899         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16900         mono_class_from_name () to find a class from its name.
16901
16902         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16903
16904 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16905
16906         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16907
16908 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16909
16910         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16911
16912 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16915         callinfo->trampoline.
16916
16917         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16918         fixes #79271.
16919         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16920         future.
16921
16922 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16923
16924         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16925
16926 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16927
16928         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16929         stats.method_trampolines, it is already done by the generic trampoline code.
16930
16931         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16932         
16933 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16934
16935         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16936
16937         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16938
16939         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16940
16941         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16942         
16943         * mini.c (print_jit_stats): Print new stats.
16944
16945         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16946
16947 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16950         Address on two dimensional arrays. Fixes #78729.
16951
16952         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16953
16954         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16955         a method.
16956
16957         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16958
16959         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16960         #79130.
16961         
16962         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16963         a race condition.
16964         (mini_get_ldelema_ins): Ditto.
16965
16966 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16967
16968         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16969         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16970         Fixes #79213.
16971
16972 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16973
16974         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16975         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16976
16977         * exceptions-s390x.c: Cosmetic change.
16978
16979         * tramp-s390.c: Fix warning.
16980
16981         * cpu-s390.md: Correct length of mul_imm.
16982
16983 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16984
16985         * aot-compiler.c: added binary writer with ELF backend
16986         implementation (only on Linux/x86 for now).
16987
16988 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * Makefile.am: Don't run net 2.0 AOT tests.
16991
16992         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16993         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16994
16995         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16996
16997 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16998
16999         * aot-compiler.c: simplified and refactored the asm-writing code
17000         to allow different backends.
17001
17002 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17003
17004         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17005
17006         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17007         little. Share patches of type TYPE_FROM_HANDLE as well.
17008
17009         * mini.c (mono_patch_info_equal): New helper function.
17010         (mono_patch_info_hash): Ditto.
17011
17012         * aot-compiler.c (emit_method_code): Fix s390 build.
17013
17014         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17015         is not handled because it is stored as a flag and not as a type ctor. Fixes
17016         #79016.
17017
17018 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * aot-compiler.c: Fix computation of GOT slot statistics.
17021         
17022         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17023         Also remove support for not PIC AOT.
17024
17025         * mini.h: Bump AOT file format version.
17026
17027         * objects.cs: Add a test for #78990.
17028
17029         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17030         (peter.dettman@iinet.net.au). Fixes #79087.
17031
17032         * basic-long.cs: Add a test for the above.
17033
17034 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17037         
17038         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17039         code somewhat.
17040
17041 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17042
17043         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17044         exceptions.
17045
17046 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17047
17048         * mini.c: Don't verify COM proxy invoke calls
17049         
17050
17051 2006-08-10  Dick Porter  <dick@ximian.com>
17052
17053         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17054         which process is holding semaphores locked.
17055
17056 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17057
17058         * mini-ia64.c mini-amd64.c: Fix #79027.
17059
17060         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17061
17062         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17063
17064         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17065         implicit arguments in a vararg call. Fixes #79027.
17066
17067 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17068
17069         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17070         (mono_get_array_new_va_signature): Ditto.
17071
17072 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17073
17074         * aot-runtime.c: Call init_plt lazily.
17075
17076         * inssel-long.brg: Fix unsigned long->int conversion.
17077
17078         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17079
17080         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17081         that most data is now in the .rss/.data section.
17082
17083 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17084
17085         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17086
17087         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17088
17089         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17090
17091         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17092
17093         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17094         virtual call. Fixes #79010.
17095
17096         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17097         and use the result as the this argument in the real call.
17098
17099         * generics.2.cs: Add a new test for #79010.
17100         
17101 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17102
17103         * mini-x86.c: Fix a warning.
17104
17105         * aot-compiler.c: Add a bunch of statistics.
17106
17107         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17108
17109 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17112
17113 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17114
17115         * 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>.
17116
17117 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17118
17119         * mini.c (mono_method_to_ir): Obtain the original method in the
17120         CIL stream and use this to perform validation.
17121
17122         Fixed: #78816
17123
17124 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17125
17126         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17127         (mono_arch_call_opcode): Ditto.
17128
17129         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17130         #78826.
17131
17132         * mini.c (mono_patch_info_dup_mp): New helper function.
17133         
17134         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17135         compilation. Fixes #78827.
17136
17137 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17138
17139         * declsec.c: Use original security informations for
17140           MONO_WRAPPER_MANAGED_TO_MANAGED.
17141
17142 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17143
17144         * mini.c: Allow Com Interop methods/classes and
17145         don't verify COM wrapper calls
17146         
17147
17148 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17149
17150         * inssel-long32.brg: Fix long->i4 checked conversion.
17151
17152         * exceptions.cs: Add a test for the above.
17153
17154 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17155
17156         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17157
17158         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17159         leaks.
17160
17161         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17162         #78775.
17163
17164 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17165
17166         * mini.c: Fix solaris/x86 exception handling.
17167
17168         * Makefile.am: Get rid of $(ICU_LIBS).
17169
17170 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17171
17172         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17173         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17174         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17175
17176         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17177
17178         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17179         this function causes a SIGSEGV.
17180
17181 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17182
17183         * mini.c: Remove unused solaris/x86 includes.
17184
17185 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17186
17187         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17188
17189 2006-06-20  Jb Evain  <jbevain@gmail.com>
17190
17191         * cpu-g4.md: fix max length of start_handler instruction.
17192
17193 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17194         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17195
17196 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17197         * ssa.c: Fixed bug 78653 for SSA based deadce.
17198         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17199         MonoInst.flags, used in SSA based deadce.
17200         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17201         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17202
17203 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17204
17205         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17206         it can end up using non executable memory on ppc64 systems
17207         running ppc32 userspace (fix from Johannes Berg).
17208
17209 2006-06-14  Dick Porter  <dick@ximian.com>
17210
17211         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17212         4.1.1
17213
17214 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17215         * mini.c: Made so that inline is locally disabled if it would
17216         trigger a .cctor, because too many apps depend on this behavior
17217         (which seems to be also the one of the MS CLR).
17218
17219 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17220
17221         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17222         No idea why this worked before.
17223
17224         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17225         which branch to outer exception clauses since they could skip the
17226         inner finally clauses. Fixes #78633.
17227
17228         * exceptions.cs: Add a test for the above.
17229
17230         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17231         Fixes #78629.
17232
17233         * iltests.il: Add a test for the above.
17234
17235 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17236
17237         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17238         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17239
17240         * iltests.il: Add a test for the above.
17241
17242 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17243
17244         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17245         
17246         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17247         methods as instrinsics.
17248
17249 2006-06-09  Wade Berrier <wberrier@novell.com>
17250
17251         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17252         (simple-cee-ops.h ssapre-mini-ops.h)
17253
17254 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17255
17256         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17257         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17258         instruction).
17259         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17260         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17261
17262 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17263
17264         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17265
17266 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17267
17268         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17269         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17270         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17271         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17272         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17273         of opcodes, so that bug 78549 should not happen again.
17274         * ssapre.c: Updated to use the renamed files.
17275
17276 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17277
17278         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17279         in OP_ATOMIC_EXCHANGE_I4.
17280
17281 2006-06-07  Wade Berrier <wberrier@novell.com>
17282
17283         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17284         in mono_debugger_create_notification_function)
17285
17286 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17287
17288         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17289         
17290         * mini.c (type_from_stack_type): Disable some changes which do not
17291         seem to work.
17292
17293         * driver.c: Reenable opts.
17294
17295         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17296         of the evaluation stack.
17297         
17298         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17299         evaluation stack trace at entry to the bblock.
17300
17301         * mini.c (merge_stacks): New function to perform verification of stack merges.
17302         Turned off by default.
17303
17304         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17305         STACK_MP.
17306         
17307 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17308
17309         * local-propagation.c: Fixed bug 78549.
17310
17311 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17312
17313         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17314
17315 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17316
17317         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17318         tramp-arm.c, tramp-ia64.c
17319         (mono_debugger_create_notification_function): Update signature to
17320         new signature and use new protocol for creating the notification
17321         function.  
17322
17323         Should fix the build.
17324
17325 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17326
17327         * exceptions-ppc.c (mono_jit_walk_stack)
17328         (ves_icall_get_frame_info): Fix the build
17329
17330 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17331
17332         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17333
17334 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17335
17336         * il2tests.2.il: New file for generics CIL tests.  Add test for
17337         #78019.
17338         * Makefile.am: Update.
17339
17340         Fix #78019
17341         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17342         to nullable types.
17343
17344 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17345
17346         * aliasing.c: Fixed bug 78311.
17347
17348 2006-05-29  Martin Baulig  <martin@ximian.com>
17349
17350         * mini-exceptions.c (mono_find_jit_info): When computing the
17351         native offset, check whether we're actually inside the method's
17352         code; call mono_debug_print_stack_frame() to format the frame.
17353         (ves_icall_System_Exception_get_trace): Call
17354         mono_debug_print_stack_frame() to format the stack frame.
17355         (ves_icall_get_trace): Update to the new debugging API.
17356         (mono_jit_walk_stack_from_ctx): Likewise.
17357         (ves_icall_get_frame_info): Likewise.
17358
17359         * mini.c (get_method_from_ip): Use the new debugging API.
17360         (mono_print_method_from_ip): Likewise.
17361
17362         * exceptions-ppc.c
17363         (mono_jit_walk_stack): Use the new debugging API.
17364         (ves_icall_get_frame_info): Likewise.   
17365
17366 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17367
17368         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17369
17370 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17371
17372         * mini.c: Added "limitator" to inline for debugging.
17373
17374 2006-05-24  Martin Baulig  <martin@ximian.com>
17375
17376         * debug-debugger.c (mono_debugger_init): Create a private,
17377         malloc()-based code manager for the notification function and
17378         intentionally leak it on exit.  This fixes the crash-on-exit race
17379         condition.
17380
17381         * tramp-amd64.c
17382         (mono_debugger_create_notification_function): Added
17383         `MonoCodeManager *' argument.
17384
17385         * tramp-x86.c
17386         (mono_debugger_create_notification_function): Added
17387         `MonoCodeManager *' argument.
17388
17389 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17390
17391         * aliasing.c: Fixed 64 bit issue.
17392         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17393         default since all known bugs are fixed (one more time!).
17394
17395 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17396
17397         * mini.c: write barrier support.
17398
17399 2006-05-23  Martin Baulig  <martin@ximian.com>
17400
17401         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17402         check at the top of the file.
17403
17404 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17405
17406         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17407         reverting changes without reason and without changelog entries.
17408
17409 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17410
17411         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17412         to a few opcodes. Fixes #78439.
17413
17414         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17415         consistency with other archs.
17416
17417         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17418
17419 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17420
17421         * debug-debugger.c: fix the build.
17422
17423 2006-05-17  Martin Baulig  <martin@ximian.com>
17424
17425         * debug-debugger.c
17426         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17427         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17428         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17429         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17430
17431 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17432
17433         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17434
17435 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17436
17437         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17438         MONO_TYPE_GENERICINST.
17439         
17440         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17441         MONO_TYPE_GENERICINST.
17442
17443 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17444
17445         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17446         #78325.
17447
17448 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17449
17450         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17451         mempool.
17452         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17453
17454 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17455
17456         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17457         mono_trace_cleanup ().
17458
17459         * iltests.il: Fix problem with the newly added test.
17460
17461         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17462         due to register constraints, free up the previous hreg. Fixes #78314.
17463
17464         * iltests.il: Add new test for #78314.  
17465
17466         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17467         Interlocked.Add. Fixes #78312.
17468
17469         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17470         
17471 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17472
17473         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17474
17475 2006-05-05  Martin Baulig  <martin@ximian.com>
17476
17477         * debug-mini.c (mono_debug_open_block): New method.
17478
17479         * mini-amd64.c
17480         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17481         the beginning of each basic block.
17482
17483         * mini-x86.c
17484         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17485         the beginning of each basic block.
17486
17487 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17488
17489         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17490         default until I understand why they break the build on amd64.
17491
17492 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17493
17494         * mini.c (mini_cleanup): Call mono_cleanup ().
17495
17496         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17497         errors.
17498
17499 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17500
17501         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17502         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17503         default since all known bugs are fixed, and I cannot reproduce bug
17504         77944... I'm asking Matt Hargett to test again after this commit.
17505
17506 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17507
17508         * mini-codegen.c: Fixed typo that thrashed inline.
17509
17510 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17511
17512         * dominators.c (compute_dominators): Avoid using a worklist since
17513         it is not correct in some cases. Instead, iterate over all bblocks as
17514         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17515
17516 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17517
17518         * mini.c (mono_jit_compile_method_inner): Use
17519         mono_prepare_exception_from_error that resets the value
17520         internally.
17521
17522 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17523
17524         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17525         
17526 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17527
17528         * aliasing.c: Fixed bug 78210.
17529
17530 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17531
17532         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17533         default until all their problems (or the ones they trigger) are fixed.
17534
17535 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17536
17537         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17538         
17539         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17540         as loaded only after resolving patches since that could invoke the same method.
17541
17542         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17543
17544         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17545         functions.
17546
17547         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17548         AOT loader.
17549
17550         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17551         stack.
17552
17553         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17554         made from AOT code through the PLT table.
17555
17556         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17557         holding the plt offset when a call is made to the aot plt trampoline.
17558         
17559 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17560
17561         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17562         amd64 AOT support.
17563
17564         * Makefile.am (common_sources): Fix build breakage.
17565
17566         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17567         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17568         intra-assembly calls if possible.
17569         
17570         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17571
17572         * mini-trampolines.c: Handle PLT entries.
17573
17574         * mini.c: Avoid creating a GOT var for calls.
17575
17576         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17577         from mscorlib code.
17578
17579         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17580         from mscorlib code.
17581
17582         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17583         AOT code.       
17584
17585         * mini.h: Bump AOT file format version.
17586         
17587         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17588         covers more cases.
17589
17590 2006-04-25  Martin Baulig  <martin@ximian.com>
17591
17592         * driver.c: Disable copyprop, consprop and inline when running
17593         inside the debugger.
17594
17595 2006-04-25  Martin Baulig  <martin@ximian.com>
17596
17597         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17598         with `get_current_thread' and added `detach'.
17599         (MonoDebuggerMetadataInfo): Added `thread_size',
17600         `thread_tid_offset', `thread_stack_ptr_offset' and
17601         `thread_end_stack_offset'.
17602
17603 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17604
17605         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17606         aot-runtime.c.
17607
17608         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17609         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17610
17611         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17612
17613         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17614
17615         * aot.c: Add support for ADJUSTED_IID.  
17616
17617 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17618
17619         * aot.c (emit_method_order): Don't align method_order_end.
17620
17621         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17622         the interface ID changes.
17623
17624 2006-04-21  Dick Porter  <dick@ximian.com>
17625
17626         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17627         cleaning up a thread.  Fixes the new part of bug 77470.
17628
17629 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17630
17631         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17632         to managed wrapper.
17633                      
17634 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17635
17636         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17637         
17638         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17639         SIGSEGV. Fixes #78072.
17640
17641         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17642         unregister our SIGABRT handler.
17643
17644 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17645
17646         * mini.c: Disabled inline where it can alter the call stack in a
17647         way visible from managed code.
17648         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17649         default.
17650
17651 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17652
17653         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17654         on other platforms. Fixes #78089.
17655
17656 2006-04-13  Martin Baulig  <martin@ximian.com>
17657
17658         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17659         determine whether we're inside the debugger.
17660
17661         * debug-debugger.h
17662         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17663
17664 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17667         handler clauses. Fixes #78024.
17668
17669         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17670         in the CALL_MEMBASE opcodes. Fixes #78088.
17671         (mono_arch_get_vcall_slot_addr): Ditto.
17672
17673 2006-04-10  Martin Baulig  <martin@ximian.com>
17674
17675         * debug-debugger.c: The thread handling code has now been moved
17676         into ../metadata/threads.c.
17677
17678 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17679
17680         * driver.c (mono_main): Fix --with-gc=none build.
17681
17682         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17683         (mono_spillvar_offset_float): Ditto.
17684         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17685         hreg, not when its !global, since on ia64, there is a third category: stacked
17686         registers.      
17687
17688 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17689
17690         * mini.c: set MonoInst->klass for load field address and a few other
17691         places.
17692
17693 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17694
17695         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17696
17697 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17698
17699         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17700         the branch opt changes.
17701
17702 2006-04-06  Dick Porter  <dick@ximian.com>
17703
17704         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17705         
17706         * wapihandles.c (mini_wapi_seminfo): 
17707         * driver.c (mono_main): Add semaphore info option
17708
17709 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17710
17711         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17712         branch optimization changes. Fixes #78009.
17713
17714 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17715
17716         * mini.c: ignore accessibility of methods in managed->native wrappers.
17717
17718 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17719
17720         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17721         
17722         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17723
17724 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17725
17726         * mini.c: Modify the branch optimizations to preserve the invariant that
17727         the entries inside the in_bb and out_bb arrays are unique.
17728         (mono_unlink_bblock): Avoid creation of new arrays.
17729
17730 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17731
17732         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17733         change (#77992).
17734
17735 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17736
17737         * mini.c (optimize_branches): Remove the "optimizations" in
17738         the cbranch1/cbranch2 -> branch cases which were causing several
17739         problems in the past. Fixes #77986.
17740
17741 2006-03-31  Chris Toshok  <toshok@ximian.com>
17742
17743         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17744         default optimizations :(
17745
17746 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17747
17748         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17749         branch.
17750
17751 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17752
17753         * local-propagation.c: Added comments to structs and removed
17754         "Mono" prefixes from local tree mover types.
17755
17756 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17757
17758         * Makefile.am (arch_sources): Define this for each architecture so 
17759         libmono_la_SOURCES is defined in one place.
17760
17761 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17762
17763         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17764         from handles/.
17765
17766 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17767
17768         * driver.c: print the GC name supplied by configure.
17769
17770 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17771
17772         * local-propagation.c: Added tree mover, and moved here all the
17773         local propagation code from mini.c
17774         * mini.c: Added support for treeprop, and moved all the local
17775         propagation code to local-propagation.c
17776         * mini.h: Added support for treeprop
17777         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17778         treeprop, inline and deadce by default
17779         * Makefile.am: Added local-propagation.c
17780
17781 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17782
17783         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17784
17785 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17786
17787         * debug-debugger.c: make it compile without the Boehm GC.
17788
17789 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17790
17791         * mini.c: fixed issue with mismatch when an icall is registered
17792         with multiple names but same address.
17793
17794 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17795
17796         * declsec.c, mini-exceptions.c: use write barrier to set reference
17797         fields of managed objects.
17798
17799 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17800
17801         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17802         (can_access_internals): Fix a warning.
17803
17804         * mini.c (print_method_from_ip): Rename this to 
17805         mono_print_method_from_ip so it gets exported.
17806
17807         * trace.c: Deal with strings inside StringBuilder's containing garbage
17808         and fix memory leaks. Fixes #77848.
17809
17810 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17811
17812         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17813         fixes #77787.
17814
17815 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17816         
17817         * mini-s390.c: Remove OP_X86_TEST_NULL.
17818
17819 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17820
17821         * mini.c: use the correct GetHashCode() for the moving collector.
17822
17823 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17824
17825         * liveness.c: Regalloc spill cost tuning.
17826
17827 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17828         
17829         * mini-s390x.h: Correct S390_LONG macro.
17830
17831         * mini-s390x.c: Cleanup unused code.
17832
17833 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17834
17835         * jit-icalls.h: New file.
17836
17837         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17838         icalls and include that instead of including jit-icalls.c.
17839
17840         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17841         OP_X86 opcodes.
17842
17843 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17844
17845         * mini.c: when checking for member accessibility, also check for
17846         friend assemblies and for explicit interface implementations.
17847
17848 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17849
17850         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17851
17852         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17853
17854         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17855         common cases are done first.    
17856
17857         * mini-ops.h: Only define platform specific opcodes on the given platform.
17858
17859         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17860         branch.
17861         
17862 2006-03-14  Martin Baulig  <martin@ximian.com>
17863
17864         Revert Paolo's change from r57348:
17865
17866         * mini.h: don't use gboolean for bitfields.
17867         * mini.c: verifier changes for fields and methods accessibility.
17868
17869 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17870
17871         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17872
17873         * mini-s390x.c: Fix conv_r_un.
17874
17875         * cpu-s390, cpu-s390x.md: Fix lengths.
17876
17877 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17878
17879         * mini.c: nested types have access to all the nesting
17880         levels, not just the enclosing types.
17881
17882 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17883
17884         * mini.c: added a few more verification checks.
17885
17886 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17887
17888         * liveness.c: Merge optimizations from the linear-il branch.
17889
17890 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17891
17892         * mini-ia64.c (emit_call): Add a comment.
17893
17894         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17895
17896         * tramp-ia64.c: Fix some warnings.
17897
17898 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17899
17900         * mini.h: don't use gboolean for bitfields.
17901         * mini.c: verifier changes for fields and methods accessibility.
17902
17903 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17904
17905         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17906         lazy icall wrapper changes.
17907
17908         * dominators.c: Replace all the dominator algorithms with faster
17909         ones from the linear-il branch.
17910
17911         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17912         the mempool.
17913
17914         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17915         common cases are done first.
17916
17917         * mini-amd64.c: Fix some warnings.
17918
17919         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17920         from the mempool.
17921
17922         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17923         added code.
17924
17925         * mini.h: Add a missing prototype.
17926
17927 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17928
17929         * mini.c: Compile icall wrappers lazily.
17930
17931         * mini-codegen.c: Use printf instead of g_print since its much faster.
17932
17933         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17934         function.
17935
17936         * mini.c (optimize_branches): Cache the negative result from 
17937         remove_block_if_useless ().
17938
17939         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17940         Also fix some bblock linking issues.
17941
17942         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17943         assembly files.
17944
17945         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17946
17947         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17948         accessed fields first, for better cache behavior.
17949         
17950 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17951
17952         * mini.c: speedup IList<T> array accesses.
17953
17954 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17955
17956         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17957         inline_costs counter. Fixes #77190.
17958
17959 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17960
17961         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17962         trace messages. Fixes #77706.
17963
17964 2006-03-04  Martin Baulig  <martin@ximian.com>
17965
17966         * tramp-amd64.c, tramp-x86.c
17967         (mono_debugger_create_notification_function): Use
17968         mono_global_codeman_reserve() to allocate a buffer at runtime and
17969         return it.
17970
17971         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17972
17973         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17974         notification function at runtime and then call `initialize' in the
17975         `MONO_DEBUGGER__debugger_info' vtable.
17976
17977 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17978
17979         * iltests.il: Fix a visibility problem.
17980
17981 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17982
17983         * driver.c, mini.c: add hooks for the counters API.
17984
17985 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17986
17987         * driver.c: show disabled options.
17988
17989 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17990
17991         * linear-scan.c: always use cost-driven selection.
17992
17993 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17994
17995         * jit-icalls.c (helper_compile_generic_method): Revert change from
17996         2006-02-24.
17997
17998 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17999
18000         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18001
18002 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18003
18004         * inssel.brg: style fixes, mostly to force the updated monoburg
18005         to run for people using svn.
18006
18007 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18008
18009         * mini.c: match monoburg changes.
18010
18011 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18012
18013         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18014         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18015         declaration in the header file.
18016
18017 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18018
18019         * helpers.c: reduce relocations and mem usage.
18020
18021 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini.h, mini-codegen.c: disable logging features if
18024         requested by configure.
18025
18026 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18027
18028         * mini.c: tiny verifier changes.
18029
18030 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18031
18032         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18033         cpu-pentium.md: stack alignment changes for osx/x86,
18034         partially from Geoff Norton <gnorton@customerdna.com>.
18035
18036 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18037
18038         * jit-icalls.c (helper_compile_generic_method): Update to changes
18039         in metadata/class.c.
18040
18041 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18042         
18043         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18044         
18045         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18046         interface calls with large offsets.
18047
18048 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18049
18050         * jit-icalls.c (helper_compile_generic_method): Document the
18051         special-case we depend on so that we can inflate the method twice
18052         with the same context with no bad side-effects.
18053
18054 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18055
18056         * mini-x86.c, mini-amd64.c: fix for case when xen support
18057         is disabled.
18058
18059 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18060
18061         * mini-x86.c, mini-amd64.c: generate code to access tls items
18062         in a faster way for Xen systems.
18063
18064 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18065
18066         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18067         updates and compilation fixes for the OSX/x86 port, mostly from
18068         Geoff Norton <gnorton@customerdna.com>.
18069
18070 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18071
18072         * inssel.brg: faster interface call implementation
18073         to sync with the interface_offsets MonoVTable changes.
18074
18075 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18076
18077         * mini.c: more verification checks.
18078
18079 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18080
18081         * mini.c: added a few more verification checks.
18082
18083 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18084
18085         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18086         facility on the processor and use it if available.
18087
18088 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * driver.c, aot.c, mini.c: throw exception if the IL code is
18091         invalid or unverifiable.
18092
18093 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18094
18095         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18096         m.StructField.
18097
18098 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18099
18100         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18101
18102 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18103
18104         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18105         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18106         handling of instantiated generic valuetypes.
18107
18108 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18109
18110         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18111         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18112         instead.
18113
18114         * generics.2.cs: Revert the nullable reftypes tests.
18115
18116 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18117
18118         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18119         using __builtin_frame_address (1) as it doesn't work in the presence
18120         of optimizations. Hopefully fixes #77273.
18121
18122         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18123         -> generics.cs change as it doesn't work with some automake versions.
18124
18125 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18126
18127         * mini.c: handle systems that sue a different way to
18128         retrieve the stack address of the current thread.
18129
18130 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18131
18132         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18133         it specially in the makefile.
18134
18135         * generics.2.cs: Add tests for nullable reference types.
18136
18137 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18138
18139         * mini.c: always handle the case when mono_jit_init()
18140         is called in a thread different from the main thread,
18141         confusing libgc (bug #77309).
18142
18143 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18144
18145         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18146
18147 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18148
18149         * mini.c: change optimize_branches () to use a single loop
18150         and introduce a new optimization to simplify some range checks.
18151
18152 2006-02-03  Martin Baulig  <martin@ximian.com>
18153
18154         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18155         and merged with debugger_thread_manager_add_thread().
18156         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18157         inform the debugger about the main thread.
18158
18159 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18160
18161         * basic.cs: Add test for div.un/rem.un constant folding.
18162
18163 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18164
18165         * cpu-s390x.md: correct int_xor_imm length
18166
18167 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18168
18169         * generics.2.cs: New test for #77442.
18170
18171         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18172         #77442.
18173
18174 2006-02-02  Martin Baulig  <martin@ximian.com>
18175
18176         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18177         <mono/metadata/mono-debug-debugger.h>   
18178
18179         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18180
18181 2006-02-02  Martin Baulig  <martin@ximian.com>
18182
18183         * debug-debugger.h: New header file for debug-debugger.c.
18184
18185         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18186         function is a separate thread anymore; add support for attaching.
18187
18188 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18189
18190         * tramp-x86.c: Fix a warning.
18191
18192 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18193
18194         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18195         on very large methods.
18196
18197         * aot.c (load_patch_info): Fix a warning.
18198
18199 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18200
18201         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18202         mini-ops.h: alu membase optimizations.
18203
18204 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18205
18206         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18207         to speedup StringBuilder.
18208
18209 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18210
18211         * dominators.c (mono_compute_natural_loops): Fix detection of
18212         loop body start blocks.
18213
18214         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18215
18216 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18217
18218         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18219         #75145.
18220
18221 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18222
18223         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18224
18225 2006-01-25  Martin Baulig  <martin@ximian.com>
18226
18227         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18228         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18229         started to cleanup this file a little bit.
18230
18231 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18232
18233         * mini.c: optimize a codepath frequently happening in generics code.
18234
18235 2006-01-23  Martin Baulig  <martin@ximian.com>
18236
18237         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18238
18239         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18240         functions directly.
18241
18242         * driver.c: debug-debugger.c is only available if
18243         `MONO_DEBUGGER_SUPPORTED' is defined.   
18244
18245 2006-01-23  Martin Baulig  <martin@ximian.com>
18246
18247         * debug-debugger.c: Only enable this on platforms where the Mono
18248         Debugger is working (x86 and x86_64).
18249
18250 2006-01-21  Martin Baulig  <martin@ximian.com>
18251
18252         The Mono Debugger is now using the normal `mono' instead of the
18253         `mono-debugger-mini-wrapper' when executing managed code.
18254
18255         * debug-debugger.c: New file; previously known as
18256         debugger/wrapper/wrapper.c.
18257
18258         * debug-mini.c (mono_init_debugger): Removed.
18259
18260         * driver.c (mono_main): Added new `--inside-mdb' command line
18261         argument which is used when running inside the debugger.
18262
18263 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18264
18265         * liveness.c (mono_analyze_liveness): Remove some unused data
18266         structures.
18267
18268 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18269
18270         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18271
18272 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18273
18274         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18275         depends on implementation details of monobitset.
18276
18277         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18278         Fixes #77271.
18279
18280 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * liveness.c: Update after monobitset changes.
18283
18284 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18285
18286         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18287
18288 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18289
18290         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18291
18292         * mini-s390x.c: Remove warning messages.
18293
18294 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18295
18296         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18297
18298 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18299
18300         * generics.2.cs: Add ldelem/stelem_any test.
18301
18302 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18303
18304         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18305
18306 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18307
18308         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18309         
18310 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18311
18312         * generics.2.cs: Reenable vtype tests.
18313
18314         * inssel-x86.brg: Remove an icorrect valuetype rule.
18315
18316 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18317
18318         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18319         initial support for OP_ABS.
18320
18321 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18322
18323         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18324
18325 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18326
18327         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18328         conversion and implement LADD/LSUB.
18329
18330         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18331         architectures.
18332
18333 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18334
18335         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18336
18337         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18338         architectures.
18339
18340 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18341
18342         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18343         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18344         (stack walk problem).
18345
18346 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18347
18348         * aot.c (mono_aot_load_method): Fix a warning.
18349
18350 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18351
18352         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18353
18354 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18355
18356         * iltests.il: Add test for #77148.
18357
18358         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18359         #77148.
18360
18361 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18362
18363         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18364
18365 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18366
18367         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18368         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18369
18370         * basic-long.cs: Add lconv-to-r4/r8 tests.
18371
18372 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18373
18374         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18375
18376         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18377         here as on other archs.
18378
18379 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18380
18381         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18382
18383 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18384
18385         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18386         
18387         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18388
18389         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18390         instrument_prolog; Add memory_barrier instruction.
18391
18392 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18393
18394         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18395
18396 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18397
18398         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18399
18400         * aliasing.c inssel.brg: Fix warnings.
18401
18402         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18403         could skip initialization of some parts of memory.
18404
18405         * mini.c mini-ia64.c: Fix warnings.
18406
18407         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18408
18409 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18410
18411         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18412         a crash seen on sparc.
18413
18414         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18415         
18416         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18417
18418 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18419
18420         * mini-ops.h: Add s390_backchain instruction
18421
18422         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18423
18424         * cpu-s390.md: Add s390_backchain instruction
18425
18426         * mini-s390.c: Significant ABI changes
18427
18428         * mini-s390.h: Cater for zero length structures
18429
18430 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18431
18432         * mini-s390.c: ABI fixes
18433
18434         * inssel-s390.brg: Remove debug statements
18435
18436         * cpu-s390.md: Fix length of ATOMIC_xx operations
18437
18438 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18439
18440         * basic-float.cs: Add float<->long conversion tests.
18441
18442 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18443
18444         * mini-s390.c: Fix LOCALLOC processing.
18445
18446         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18447
18448 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18449
18450         * iltests.il: Add tests for some opcodes not covered by the other
18451         tests.
18452
18453 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18454
18455         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18456         register loading for Tail processing; Correct trace output.
18457
18458         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18459
18460         * cpu-s390.md: Correct size of jmp instruction. 
18461
18462 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18463
18464         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18465
18466 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18467
18468         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18469           Bring s390 up to current level.
18470
18471 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18472
18473         * generics.2.cs: Disable the newly added tests as they do not work yet.
18474         
18475         * generics.2.cs: Add valuetype tests.
18476
18477 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18478
18479         * basic-long.cs: Add i4->u8 test.
18480
18481         * objects.cs: Add tests for JIT intrinsic.
18482
18483         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18484         optimizations lost by a mistake.
18485
18486 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18487
18488         * basic-long.cs: Remove a test moved to objects.cs.
18489
18490         * arrays.cs: Add more array tests.
18491
18492 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18493
18494         * arrays.cs: Add new tests for multi-dimensional arrays.
18495
18496 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18497
18498         * Makefile.am (test_sources2): Add generics.2.cs.
18499         (EXTRA_DIST): Add test_sources2.
18500
18501 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18502
18503         Support for boxing and unboxing nullable types as well as the
18504         isinst operation on nullables, per the CLI ammendment.
18505
18506         * inssel.brg (CEE_ISINST): Special case for nullable
18507
18508         * mini.c (handle_unbox_nullable): new method
18509         (handle_box): Special case for nullable types
18510         (mono_method_to_ir): Call handle_unbox_nullable in correct
18511         places.
18512
18513         * generics.2.cs: New test suite
18514
18515         * Makefile.am: Support for regression tests with generics.
18516
18517 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18518
18519         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18520         allocated to registers. Fixes #76800.
18521
18522 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18523
18524         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18525
18526 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18527
18528         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18529         of platforms.
18530
18531 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18532
18533         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18534         objects.cs.
18535
18536         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18537         
18538         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18539 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18540
18541         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18542         single precision before storing to a single precision location.
18543
18544 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18545
18546         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18547
18548 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18549
18550         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18551         correct files.
18552
18553         * basic.cs: Remove test_0_byte_compares test which was moved to
18554         objects.cs a long time ago.
18555
18556 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18557
18558         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18559
18560 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18561
18562         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18563         handlers are called.
18564
18565         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18566         throwing code.
18567
18568          * mini-ia64.c: Add support for the throw->branch exception 
18569         optimization.   
18570
18571         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18572
18573 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18574
18575         * mini.c: Enabled "fastpath" deadce :-)
18576         
18577 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18578
18579         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18580         alias analysis pass to support it.
18581         * mini.h: Likewise.
18582         * ssa.c: Likewise.
18583         * liveness.c: Likewise (liveness computation can use aliasing
18584         information to be more accurate).
18585         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18586         moreover made so that "--compile-all" uses the given optimization
18587         flags and not the default ones.
18588         * aliasing.c: Alias analysis (new file).
18589         * aliasing.h: Likewise.
18590         * Makefile.am: added "aliasing.c" and "aliasing.h".
18591         
18592 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18593
18594         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18595         OP_L opcodes.
18596
18597 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18598
18599         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18600         fp >= end_of_stack exit condition, as it is not needed, and it might
18601         become true for fp eliminated frames.
18602
18603 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18604
18605         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18606         coded offsets.
18607
18608 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18609
18610         * mini-arm.c: fixed alignment of doubles/longs to match
18611         the C ABI (bug #76635).
18612
18613 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18614
18615         * aot.c: fix compilation with --enable-minimal=aot.
18616
18617 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18618
18619         * mini-arm.c: fixed compatibility with the new
18620         floating point emulator package for compares.
18621
18622 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18623
18624         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18625
18626 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18627
18628         * mini-exceptions.c (print_stack_frame): Output to stderr.
18629         (mono_handle_native_sigsegv): Ditto.
18630
18631 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18632
18633         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18634         OP_LCONV_TO_OVF_I implementation.
18635
18636         * mini-amd64.c: Add support for the throw->branch exception 
18637         optimization.
18638
18639         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18640         when the catch clause catches a more general exception, i.e. Object.
18641
18642 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18643
18644         * cpu-ia64.md: Remove unused opcodes.
18645
18646         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18647         specific defines for architectures defining USE_SIGACTION.
18648
18649         * mini-ia64.c: Fix some warnings.
18650
18651         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18652         version seemed to skip a frame.
18653
18654 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18657         only calls which are made to native code use this flag.
18658
18659 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18662         varargs methods as well.
18663         
18664         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18665         which have save_lmf set. Reorganize methods prologs a bit.
18666
18667         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18668         debugger to the proper place.
18669
18670 2005-10-29  Martin Baulig  <martin@ximian.com>
18671
18672         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18673         when running inside the debugger until the debugger has support
18674         for it.
18675
18676 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18677
18678         * mini.h: Fix a warning.
18679
18680 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18681
18682         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18683         we expose publicly, this returns the string.
18684
18685 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18688         with fp elimination.
18689
18690 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18691
18692         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18693         native stacktrace using the glibc 'backtrace' function if available.
18694
18695 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18696
18697         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18698
18699         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18700         handle SIGSEGVs received while in native code.
18701
18702         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18703         code, call mono_handle_native_sigsegv which will abort the runtime
18704         after printing some diagnostics, instead of converting it into a
18705         confusing NullReferenceException.
18706
18707 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18708
18709         * cpu-pentium.md: Remove unused opcodes.
18710
18711 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18712
18713         * mini-amd64.h (MonoLMF): Add rsp field.
18714
18715         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18716         the lmf too.
18717
18718 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * mini-codegen.c (get_register_spilling): Fix some warnings.
18721
18722 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18725         elimination during exception handling. Enable fp elimination by
18726         default.
18727
18728         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18729         elimination.
18730
18731 2005-10-16  Martin Baulig  <martin@ximian.com>
18732
18733         * mini-exceptions.c
18734         (mono_debugger_run_finally): New public method for the debugger.
18735
18736 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18737
18738         * debug-mini.c (mono_debug_init_method): Fix warning.
18739
18740         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18741         the 'exname' parameter const to fix some warnings.
18742
18743 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18744
18745         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18746         introduced by the previous patch.
18747
18748 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18749
18750         * basic-float.cs: Add test for precision of float arithmetic.
18751
18752         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18753         when loading/storing single values from/to memory.
18754
18755         * mini.c (mono_jit_compile_method_with_opt): Create the function
18756         pointers in the correct domain.
18757
18758 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18761         introduced by previous patch.
18762         
18763         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18764         when out_filter_idx is NULL.
18765
18766         * mini-exceptions.c: Don't run filter clauses twice during exception
18767         handling. Fixes #75755.
18768
18769 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18770
18771         * aot.c: Add support for ldflda wrappers.
18772
18773         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18774         #75902.
18775
18776 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18777
18778         * mini.c, mini.h: do not consider exception handlers blocks when
18779         setting up interface variables.
18780
18781 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18782
18783         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18784
18785 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18786
18787         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18788         causes a regression.
18789
18790         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18791
18792 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18795         of the OP_P definitions.
18796
18797         * TODO: Add a proposal for dealing with the CEE/OP mess.
18798
18799         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18800         optimizations from the x86 port.
18801
18802         * cpu-amd64.md: Ditto.
18803
18804         * basic.cs basic-long.cs: Add tests.
18805
18806 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18807
18808         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18809         Patrik Torstensson's implementation of my exception-handling
18810         optimization idea, when the exception object is not used
18811         (bug #62150).
18812
18813 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18814
18815         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18816         of the mul_imm optimizations from the old jit.
18817
18818 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18819
18820         * mini.c, liveness.c: patch by Patrik Torstensson and
18821         Zoltan Varga to improve performance in methods with
18822         exception clauses.
18823
18824 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18825
18826         * driver.c: Remove 'Globalization' entry from --version.
18827
18828 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18829
18830         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18831         there is a profiler interested in JIT events.
18832
18833         * aot.c: Load profile files produced by the AOT profiling module, and
18834         reorder methods based on the profiling info. Add a 'method_order' table
18835         to the AOT file to make mono_aot_find_jit_info work with the reordered
18836         methods.
18837
18838         * mini.h: Bump AOT file version info.
18839
18840 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18841
18842         * mini-arm.h: work around what looks like a gcc bug when optimizations
18843         are enabled.
18844
18845 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18846
18847         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18848         conditionals.  Use ...
18849         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18850
18851 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18852
18853         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18854         to determine the amount of memory to copy when passing valuetypes.
18855
18856         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18857         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18858
18859 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18860
18861         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18862         information about aot.
18863
18864 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18865
18866         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18867         macros. This will allow a deadlock debugger to easily be plugged
18868         in.
18869
18870 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18871
18872         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18873
18874 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18875
18876         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18877         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18878         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18879         ($(arch_built)) [CROSS_COMPILING]: Error out.
18880
18881 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18882
18883         * aot.c: Add support for the no_special_static flag for classes.
18884
18885 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * Reapply reverted patches.
18888
18889         * *: Revert r50174 as well.
18890
18891         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18892
18893 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18896
18897 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18898
18899         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18900         part of the SIG_HANDLER_SIGNATURE.  
18901
18902 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18903
18904         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18905         statistics.
18906
18907         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18908         introduced by previous patch.
18909
18910 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18913         saved registers too.
18914
18915         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18916         upon the information returned by get_call_info ().
18917         
18918         * mini-x86.c (add_float): Fix stack size calculation.
18919         (mono_arch_call_opcode): Rewrite this so it works based up the
18920         information returned by get_call_info ().
18921         (mono_arch_get_this_vret_args): Ditto.
18922
18923 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18924
18925         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18926         in cinfo to determine the registers which need to be used.
18927
18928 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18929
18930         * driver.c (mono_main): Add --server and --desktop flags. 
18931
18932 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18933
18934         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18935         registers as global registers.
18936
18937         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18938         longer needed with the new register allocator.
18939
18940         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18941
18942         * cpu-ia64.md: Remove unused opcodes.
18943         
18944         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18945         
18946 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18947
18948         * cpu-amd64.md: Remove unused opcodes.
18949
18950         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18951         needed with the new register allocator.
18952
18953         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18954         reg-reg moves.
18955
18956 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18957
18958         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18959
18960 2005-09-16  Martin Baulig  <martin@ximian.com>
18961
18962         * exceptions-amd64.c
18963         (throw_exception): Don't call mono_debugger_throw_exception() if
18964         we're a rethrow - see the FIXME in the code.
18965
18966 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18967
18968         * mini.c (mono_init_exceptions): This only works on some architectures.
18969         
18970 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18971
18972         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18973         on ia64.
18974
18975         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18976
18977         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18978         now in mini-exceptions.c.
18979
18980 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18981
18982         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18983         now in mini-exceptions.c.
18984
18985 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18986
18987         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18988         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18989
18990         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18991         code into mini-exceptions.c. Add some assertions to it.
18992
18993 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18994
18995         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18996         (<software@solmersa.com>). Fix as errors on windows.
18997
18998 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19001         method info into the LMF.
19002
19003 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19004         
19005         * mini-ia64.c: Add proper unwind info for method epilogs.
19006
19007         * exceptions-ia64.c: Add some code to help debugging.
19008         
19009         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19010
19011         * mini-exceptions.c: Fix warning.
19012
19013 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19014
19015         * mini.c: Really fix build.
19016
19017         * mini-x86.c mini-amd64.c: Fix build.
19018
19019 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19020
19021         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19022
19023         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19024         some Interlocked methods as intrinsics.
19025
19026         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19027         for Thread methods as well.
19028
19029         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19030
19031         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19032
19033         * mini-ia64.c mini-x86.c mini-amd64.c 
19034         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19035         OP_MEMORY_BARRIER.
19036         
19037         * mini.c (mono_init_exceptions): Fix build breakage.
19038
19039 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19040
19041         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19042         of instructions. Use the new ia64_unw_op macros for emitting unwind
19043         info.
19044
19045         * mini.c (mono_init_exceptions): Initialize exception handling
19046         related trampolines at startup.
19047
19048 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19049
19050         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19051
19052 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19053
19054         * mini.c: Handle type loading errors gracefully during compilation and
19055         throw the appropriate exception.
19056
19057 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19058
19059         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19060         for the mono binary.
19061
19062 2005-09-09  Martin Baulig  <martin@ximian.com>
19063
19064         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19065         the release.
19066
19067 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19068
19069         * mini-arm.h: use emulation for conv.r.un for the release.
19070
19071 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19072
19073         * mini-arm.c, objects.cs: more fixes and tests for them.
19074
19075 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19076
19077         * mini-arm.c: align structures to at least 4 bytes to be able
19078         to keep our current optimized memcpy.
19079
19080 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19081
19082         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19083
19084 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19085
19086         * mini.c: ignore SIGPIPE.
19087
19088 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19089
19090         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19091
19092         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19093
19094 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19095
19096         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19097
19098 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19099
19100         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19101         exception handling support.
19102         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19103         patch by Brian Koropoff <briank@marakicorp.com>).
19104
19105 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19106
19107         * mini.c: revert another 'optimization' which breaks when
19108         items on the eval stack need to be saved at a basic block end
19109         (bug #75940).
19110
19111 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19112
19113         * jit-icalls.c: for arrays, ensure we always provide
19114         lower bounds.
19115
19116 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19117
19118         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19119         
19120         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19121
19122 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19123
19124         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19125         arguments in their original register.
19126
19127 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19128
19129         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19130         memset/memcpy.
19131
19132         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19133         when ssapre is enabled.
19134
19135         * inssel-long.brg: Fix bug in previous patch.
19136
19137         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19138         multiplication by a constant.
19139
19140 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19141
19142         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19143         icc.
19144
19145         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19146         saving registers.
19147
19148 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19149
19150         * inssel-arm.brg: apply changes tested by Brian Koropoff
19151         <briank@marakicorp.com>.
19152
19153 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19154
19155         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19156         
19157 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19158
19159         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19160         to the same register if dreg is just a base register.
19161         (print_ins): Improve printing of membase opcodes.
19162
19163         * inssel-x86.brg: Add optimized ldind(reg) rules.
19164
19165         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19166
19167 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19168
19169         * mini.c: when running under valgrind, set the stack bottom for
19170         the GC at the actual approximate stack for the app (fixes running
19171         mono with valgrind).
19172
19173 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19174
19175         * mini.c: do no break at the first valuetype to init found
19176         (fixes bug #75791).
19177
19178 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19179
19180         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19181
19182 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19183
19184         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19185
19186 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19189
19190 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19193
19194         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19195         code.
19196
19197         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19198         code.
19199
19200         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19201         methods.
19202
19203 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19204
19205         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19206
19207 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19208
19209         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19210         in the tail recursion optimization.
19211
19212         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19213         debug info into the assembly file.
19214
19215         * iltests.il: Add test for filter regions.
19216
19217         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19218         initial stack of filter regions. Fixes #75755.
19219
19220 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19221
19222         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19223         stack requirements.
19224
19225 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19226
19227         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19228         the check for an already compiled method on non-ia64 platforms.
19229         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19230         proper domain.
19231
19232         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19233
19234         * inssel-x86.brg: Add some optimized call rules.
19235
19236 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19239         method here.
19240
19241         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19242         mono_arch_patch_delegate_trampoline.
19243
19244         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19245
19246         * mini-trampolines.c: Fix build.
19247
19248         * mini-amd64.h: Add delegate trampolines.
19249
19250         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19251
19252         * inssel-amd64.brg: Add optimized call rules.
19253         
19254         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19255
19256         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19257
19258 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19261         change.
19262
19263         * mini-ia64.c: Remove LMF fixmes.
19264
19265         * mini-ia64.h: Remove most fields from LMF.
19266
19267         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19268
19269         * mini-trampolines.c: Add support for IA64 function descriptors.
19270
19271         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19272         for IA64 function descriptors.
19273
19274 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19275
19276         * tramp-arm.c: patch the vtable for virtual calls. Added
19277         support code to register/unregister the LMF.
19278         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19279         more LMF work.
19280
19281 2005-08-19  Dick Porter  <dick@ximian.com>
19282
19283         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19284         bit value if needed.
19285
19286 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * mini.c (mini_get_method): Move handling of wrapper data here.
19289
19290         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19291
19292         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19293         virtual.
19294
19295         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19296         bblock->code does not remain empty.
19297
19298 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * arrays.cs: Add regression test for #75832.
19301
19302         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19303         rules. Fixes #75832.
19304
19305         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19306         instruction scheduling.
19307
19308 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19309
19310         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19311
19312 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19315
19316         * mini-codegen.c: Fix VC build.
19317
19318         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19319
19320 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19321
19322         * mini.h: fix signature for mono_register_opcode_emulation.
19323
19324 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * mini.c: Get rid of most of the helper_sig_... constants using
19327         mono_create_icall_signature ().
19328
19329 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19330
19331         * jit-icalls.c (helper_ldstr): New helper function.
19332
19333         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19334
19335         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19336         throw, load the string using a helper call instead of creating a string object.
19337
19338         * aot.c: Update after LDSTR changes.
19339
19340         * mini.h: Bump AOT file version.
19341         
19342         * aot.c: Save class size info into the AOT file. Print more statistics during
19343         compilation.
19344
19345         * mini.h: Bump AOT file version.
19346
19347         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19348         ordering of disasm cases. Fixes #74957.
19349
19350 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19351
19352         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19353         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19354         the generic code needed for the ARM port.
19355
19356 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19357
19358         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19359         inssel-arm.brg: more ARM features and fixes.
19360
19361 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19364         ARM port work in progress.
19365
19366 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19367
19368         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19369
19370         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19371
19372         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19373
19374         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19375
19376         * *-ia64.*: Ongoing IA64 work.
19377         
19378         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19379
19380 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * TODO: Remove out-of-data todo stuff.
19383
19384         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19385         dead code.
19386
19387         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19388
19389         * mini.h: Bump corlib version.
19390
19391 2005-07-27  Martin Baulig  <martin@ximian.com>
19392
19393         * mini-codegen.c
19394         (create_copy_ins): Added `const unsigned char *ip' argument; set
19395         `copy->cil_code' from it.
19396
19397 2005-07-27  Martin Baulig  <martin@ximian.com>
19398
19399         * mini-exceptions.c (mono_handle_exception): Don't call
19400         mono_debugger_handle_exception() for filters.
19401
19402 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19403
19404         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19405         as well.
19406
19407 2005-07-26  Martin Baulig  <martin@ximian.com>
19408
19409         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19410
19411         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19412         helper_compile_generic_method() if the method is actually virtual
19413         and non-final.
19414
19415 2005-07-26  Martin Baulig  <martin@ximian.com>
19416
19417         * mini.c
19418         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19419         public; this is now accessed directly by the debugger.
19420         (mono_generic_trampoline_code): Removed.
19421
19422         * debug-mini.c
19423         (mono_debug_init_method): Also add interncalls and wrappers.
19424
19425 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19428
19429 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19430
19431         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19432
19433 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19434
19435         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19436
19437 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19440         getting TLS offsets on AMD64 too.
19441
19442 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19443
19444         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19445
19446 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19447
19448         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19449         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19450
19451 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19454
19455         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19456         to mini.c.
19457
19458         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19459         mono_sparc_is_virtual_call ().
19460         
19461         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19462
19463         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19464         trampoline parameters.
19465
19466         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19467         
19468         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19469         to mono_arch_get_vcall_slot_addr.
19470
19471         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19472         trampoline code.
19473
19474         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19475
19476 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19479
19480 2005-07-19  Martin Baulig  <martin@ximian.com>
19481
19482         * exceptions-amd64.c (throw_exception): Call
19483         mono_debugger_throw_exception() here like we're doing it on i386.
19484
19485 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * mini-ia64.c: Add optimized TLS access support.
19488
19489 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * mini-exceptions.c: Ongoing IA64 work.
19492
19493         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19494
19495         * mini.c: Use the default optimization set when embedding. Fixes
19496         #75194.
19497
19498 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19501         of trampolines to a separate file.
19502
19503         * mini-trampolines.c: New file.
19504
19505         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19506         separate file.
19507         
19508         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19509         amd64/ia64 code.
19510
19511         * mini-codegen.c: Fix cygwin build.
19512
19513 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19514
19515         * mini.c: Add some minor changes needed by the IA64 port.
19516
19517         * *-ia64.*: Ongoing IA64 work.
19518
19519 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19520
19521         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19522         trampolines into arch-independent and arch-dependent parts.
19523
19524         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19525
19526 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19529
19530         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19531         the xp-regalloc-branch for amd64.
19532
19533         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19534         xp-regalloc-branch for x86.
19535
19536 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19539
19540 2005-07-06  Martin Baulig  <martin@ximian.com>
19541
19542         * mini.c
19543         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19544         (mono_jit_runtime_invoke): Likewise.
19545
19546 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19549         on x86 too.
19550         
19551         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19552         without loading their metadata. Reorganize the file format so exception handling+
19553         debug info is kept separate from normal method info. Create MonoJitInfo 
19554         structures for methods lazily.
19555
19556         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19557         loading metadata.
19558         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19559
19560         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19561
19562         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19563         in AOT code.
19564
19565         * mini.h: Bump AOT file version.
19566
19567 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19568
19569         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19570
19571 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19572
19573         * Makefile.am (check-local): Call semdel-wrapper.
19574
19575 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini-x86.c: Revert the last change as it seems to break the build..
19578
19579 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19582         
19583         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19584
19585 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19586
19587         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19588         outside of the macro, so strange stuff doesn't happen with gcc4
19589         (NEW_AOTCONST_TOKEN): Likewise.
19590
19591 2005-06-28  Martin Baulig  <martin@ximian.com>
19592
19593         * mini.c (mini_class_is_system_array): New static method; use this
19594         instead of `klass->parent == mono_defaults.array_class' everywhere
19595         since this also works for the new generic array class.
19596
19597 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19598
19599         * inssel.brg: Remove warnings.
19600
19601 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19602
19603         * mini-ia64.c: Ongoing IA64 work.
19604
19605         * basic-float.cs: Add float->i1 conversion test.
19606
19607         * iltests.il: Add conv.u4 test.
19608
19609 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * inssel-long.brg: Fix bug caused by last change.
19612
19613 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19614
19615         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19616         BSDs.  Allows the x86 JIT to work on OSX86
19617
19618 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19619
19620         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19621         u4->i8 conversion.
19622
19623         * mini-ia64.c: Ongoing IA64 work.
19624
19625 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * mini-ia64.c: Ongoing IA64 work.
19628
19629         * driver.c: Clean up jit_code_hash as well when using --regression.
19630
19631         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19632
19633         * basic-long.cs: Add tests for long->u4 conversion.
19634
19635 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19636
19637         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19638         that we do not depend on undefined C behavior: the order stuff
19639         gets evaluated within an expression. Fixes mono when compiled on
19640         GCC 4.
19641
19642 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19643
19644         * *-ia64.*: Ongoing IA64 work.
19645
19646         * aot.c: Lower memory usage while loading AOT methods.
19647
19648         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19649
19650         * mini.h: Bump AOT file format version.
19651
19652 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19653
19654         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19655
19656 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19657
19658         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19659         not on callee assembly). Fixed some comments.
19660
19661 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19664         it gets proper disassembly.
19665         (emit_method_info): Remove some dead code.
19666
19667         * mini.c (mini_method_compile): Allways allocate the GOT var in
19668         mono_method_to_ir for emulating opcodes.
19669
19670 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19671
19672         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19673         before freeing the code memory. Fixes #74990.
19674
19675         * objects.cs: Add regression test for #74992.
19676
19677         * liveness.c: Extend live ranges of arguments to the beginning of the
19678         method. Fixes #74992.
19679
19680         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19681         so it points into the faulting instruction.
19682
19683 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19686
19687         * *-ia64.*: Ongoing IA64 work.
19688
19689         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19690
19691 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19694
19695         * *-ia64.*: Ongoing IA64 work.
19696
19697 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * basic-long.cs: Add tests for add/sub.ovf.
19700
19701         * basic.cs: Add tests for sub.ovf.
19702
19703         * *-ia64.*: Ongoing IA64 work.
19704
19705 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * *-ia64.*: Ongoing IA64 work.
19708
19709         * basic.cs: Add conv.ovf.i4.un test.
19710
19711 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19712
19713         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19714         
19715 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19716
19717         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19718
19719 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * *-ia64.*: Ongoing IA64 work.
19722
19723 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19724
19725         * trace.[ch]:
19726         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19727
19728 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19731
19732 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19735
19736         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19737         of a call is callable by a near call.
19738
19739 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * mini-ia64.c: Ongoing IA64 work.
19742
19743 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * genmdesc.c: Make the generated array non-static.
19746
19747         * inssel-long.brg: Fix LSHR_IMM rule.
19748
19749         * *-ia64.*: Ongoing IA64 work.
19750
19751         * *-ia64.*: Ongoing IA64 work.
19752
19753 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * *-ia64.*: Ongoing IA64 work.
19756
19757         * *-ia64.*: Ongoing IA64 work.
19758         
19759         * mini-ia64.c: Ongoing IA64 work.
19760
19761         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19762
19763 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19766         
19767         * objects.cs basic-long.cs: Move some tests to objects.cs.
19768
19769 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19770
19771         * *-ia64.*: Ongoing IA64 work.
19772
19773         * iltests.il: Add a new test.
19774
19775         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19776         newobj. Fixes #75042.
19777
19778 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19779
19780         * *-ia64.*: Ongoing IA64 work.
19781         
19782         * *-ia64.*: Ongoing IA64 work.
19783         
19784         * *-ia64.*: Ongoing IA64 work.
19785
19786         * basic.cs objects.cs: Move tests accessing static variables as well.
19787
19788         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19789
19790 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19793
19794         * driver.c: Always print failed tests.
19795
19796         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19797         frame pointer.
19798
19799         * *ia64*: Ongoing IA64 work.
19800
19801 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * basic.cs: Add tests for add.ovf. Fix warnings.
19804
19805 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19806
19807         * driver.c (mono_main): Avoid crash if no argument is passed to
19808         --break;  Do not use g_error, but f_printf.   And fix all other
19809         ocurrences of the same crash.
19810
19811 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19812
19813         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19814         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19815         Fixes #74742.
19816
19817 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19818
19819         * *-ia64.*: Add beginnings of IA64 backend.
19820
19821         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19822
19823 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19826         Fixes #74925.
19827
19828         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19829
19830         * mini-amd64.c: Fix a warning.
19831
19832 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19833
19834         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19835         in float_neg. Fixes #74897.
19836
19837         * mini-amd64.c (emit_call): Fix another near call bug.
19838
19839 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19840
19841         * declsec.c: Keep the appdomain information in the structure. Added a 
19842         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19843         value gets overwritten).
19844         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19845         an MonoAppDomain member to MonoSecurityFrame.
19846         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19847         used in the stack walk. Now use a MonoArray which grow (double) when
19848         it gets full.
19849
19850 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19851
19852         * mini.c: Re-enabled runtime cleanup, since running threads should
19853         now properly stop when exiting.
19854
19855 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19856
19857         * mini-codegen.c: New file contaning the arch-independent local
19858         register allocator. Not used by any architectures yet.
19859
19860         * mini.h linear-scan.c: Merge some changes from the 
19861         mini-xp-local-regalloc branch.
19862
19863 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * mini-amd64.c (emit_call): Fix calls to native functions when the
19866         runtime is compiled as a shared library. Fixes #74756.
19867
19868         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19869         on a literal field. Fixes #74751.
19870
19871 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19872
19873         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19874
19875 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19876
19877         * objects.cs: Add missing null casting test.
19878
19879 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19882         in wrapper methods. Also rename 'address' variable to 'offset'.
19883
19884 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19887         warnings.
19888         
19889         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19890
19891         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19892         work on windows.
19893
19894 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19895
19896         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19897
19898 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19901         just the last bytes.
19902
19903 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * aot.c (mono_compile_assembly): Fix warning.
19906
19907         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19908         by the _MSC_VER stuff.
19909
19910 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * inssel-long.brg: Fix #74588.
19913
19914         * cpu-amd64.md: Fix #74591.
19915
19916         * iltests.il: Add new regression tests.
19917
19918 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19921         valuetype.
19922
19923 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19924
19925         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19926
19927         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19928         from Bill Middleton <flashdict@gmail.com>.
19929
19930 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * arrays.cs: Add new regression test. Fix warnings.
19933
19934 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19937         and leakage in CKFINITE.
19938
19939         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19940         this to a null op since it is called on amd64 too.
19941
19942         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19943
19944         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19945         body since this is not used on amd64.
19946         
19947         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19948
19949         * mini-amd64.c: Remove obsolete fixmes.
19950
19951         * mini.c (print_method_from_ip): Fix debugging support.
19952
19953 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19954
19955         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19956         so that expressions that don't give much gain are not reduced.
19957         * ssapre.h: Likewise.
19958
19959 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19962
19963         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19964
19965         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19966
19967 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19970
19971         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19972
19973 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19976         stack touching.
19977
19978         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19979
19980         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19981
19982         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19983
19984         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19985         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19986
19987         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19988
19989         * mini-x86.c: Fix up stack overflow handling.   
19990
19991         * exceptions.cs: Add new regression test.
19992
19993 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19994
19995         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19996         mono_jit_thread_attach.
19997
19998         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19999
20000 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20003         avoid calling constructors using callvirt.
20004
20005         * inssel.brg: Fix #74073.
20006
20007 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20008
20009         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20010         compilation with non-GCC compilers.
20011         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20012         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20013
20014 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20015
20016         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20017         klass->interface_offsets (will likely fix bug#74073).
20018
20019 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20022
20023 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20024
20025         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20026         to amd64_div_reg_size ().
20027         
20028         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20029
20030 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20033
20034 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20037
20038 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20041         
20042         * mini.c (mono_precompile_assembly): Load and precompile referenced
20043         assemblies as well. Fixes #74015.
20044
20045 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20046
20047         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20048
20049 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20050
20051         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20052         a lot of checks and (anyway) permissions cannot work until corlib is 
20053         loaded.
20054
20055 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20056
20057         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20058
20059 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20060
20061         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20062         calls (fixes bug#72824).
20063
20064 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20065
20066         * mini.c: fix tail recursion elimination (see test in bug#73936).
20067
20068 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20071         some fp functions in sse2 mode.
20072
20073 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20074
20075         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20076
20077 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20078
20079         * mini.h mini.c: Add mono_get_jit_tls_key ().
20080
20081         * mini-x86.c: Enable fast TLS support on windows.
20082
20083 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20084
20085         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20086         * mini.c: Check for p/invoke method when generating code. If a
20087         p/invoke method, or it's class, isn't decorated with [Suppress
20088         UnmanagedCodeSecurity] then generate code to call System.Security.
20089         UnmanagedDemand (only if the security manager is active).
20090
20091 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20092
20093         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20094         last change as it seems to cause strange crashes.
20095         
20096 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20097
20098         * *.c: handle unsafe function pointers where needed.
20099
20100 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * mini.c (mono_jit_free_method): Remove the fixme too.
20103
20104 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20105
20106         * mini.c: As discussed, make the code actually free the delegate
20107         thunk now, to enable the debugging of delegate problems, use
20108         MONO_DEBUG=1 when running Mono. 
20109
20110         This takes also care of parts of the leaks as seen by Joe.
20111
20112 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20115         thread_tls_offset calculation.
20116
20117 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20118
20119         * declsec.c: Reworked linkdemand checks for icall. The previous code
20120         was using the declaration code (untrusted) and didn't work as expected
20121         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20122         specific case.
20123
20124 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * iltests.il: Add new localloc test.
20127
20128         * mini-amd64.c: Handle large stack allocations the same way as on
20129         windows if stack overflow handling is working.
20130         
20131         * mini-amd64.c: Allocate the signal stack using mmap.
20132
20133         * mini.c (sigsegv_signal_handler): Fix reading of context.
20134
20135         * mini-exceptions.c: Fix up stack overflow handling.
20136
20137         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20138
20139         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20140
20141         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20142
20143         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20144
20145         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20146         tramp_init functions as they are no longer needed.
20147
20148 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20149
20150         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20151         
20152         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20153
20154         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20155         
20156         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20157         support that now.
20158
20159         * mini-ops.h: Add OP_LMUL_IMM.
20160
20161         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20162         long mul/div opcodes as intrinsic.
20163
20164         * mini-amd64.c (emit_call): Handle the case when the callee might be
20165         an AOT method.
20166
20167 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20170         extra safe.
20171         
20172         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20173
20174         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20175
20176 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20177
20178         * mini.c (mono_codegen): Don't leak here, to help people running
20179         monogrind.
20180
20181 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20182
20183         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20184         conversions in sse2 mode.
20185
20186         * basic-float.cs: Add regression test.
20187         
20188         * mini-amd64.c: Reenable sse2.
20189
20190 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20191
20192         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20193
20194 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20195
20196         * driver.c: Copyright text should include 2005.
20197         
20198 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * cpu-amd64.md (load_membase): Fix more max lengths.
20201
20202 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * cpu-amd64.md (load_membase): Fix max length.
20205
20206         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20207
20208         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20209
20210         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20211         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20212
20213         * basic-float.cs: Add rounding regression test.
20214
20215         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20216
20217 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20218
20219         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20220         structures in registers for pinvoke wrappers.
20221
20222 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20223
20224         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20225
20226 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20229         wrapper to mono_jit_thread_attach.
20230
20231         * mini.c (mini_jit_thread_attach): New jit icall.
20232
20233         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20234         native->managed wrappers.
20235
20236         * exceptions.cs: Add new regression test.
20237
20238         * mini.c (optimize_branches): Check regions in the cbranch to throw
20239         block case as well. Fixes #73242.
20240
20241 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20242
20243         * mini.c: thread safety fixes.
20244
20245 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20248         patching stuff, since delegates use jump trampolines so there is
20249         no caller.
20250
20251         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20252         jump trampolines.
20253         
20254         * tramp-amd64.c: Fix build.
20255
20256         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20257         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20258
20259         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20260         Rename this to mono_arch....
20261         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20262
20263         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20264
20265         * mini-amd64.c (emit_call): If both the caller and the callee is
20266         guaranteed to have 32 bit addresses, emit a normal call.
20267
20268         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20269
20270         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20271         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20272         method_ptr inside delegates.
20273
20274 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20275
20276         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20277         invalidated. Fixes #73001.
20278
20279         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20280
20281         * mini-x86.c: Only use stdcall for pinvokes on windows.
20282
20283 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20284
20285         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20286         * mini-x86.c: remove unreliable __thread var offset detection,
20287         use the correct accessors and enable by default.
20288
20289 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20290
20291         * mini.c (mono_jit_free_method): Fix memory leak.
20292
20293 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20296
20297 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * cpu-amd64.md: Fix lengths of atomic opcodes.
20300
20301 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20302
20303         * driver.c: try to not imply using ICU is any good.
20304
20305 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20308         functions as inline ops.
20309
20310         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20311         some Interlocked functions as inline ops.
20312
20313         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20314
20315         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20316
20317         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20318
20319         * mini.c: Add support for OP_NOT_TAKEN.
20320
20321         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20322         structures in registers for pinvoke wrappers.
20323
20324         * mini-amd64.c: Fix warnings.
20325
20326 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20329
20330         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20331
20332         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20333         address instead of loading the address from it.
20334
20335         * mini-x86.c: Add support for returning small structs in registers
20336         on Win32. Fixes part of #70864.
20337         
20338 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * trace.c (get_token): Improve error checking.
20341
20342 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20343
20344         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20345
20346 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20347  
20348         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20349         it can be reused for MonoClass.
20350         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20351         _LINKDEMAND.
20352
20353 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20354
20355         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20356         instead of a MonoReflectionMethod. The method information wasn't used
20357         when displaying SecurityException details (but will be now).
20358
20359 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20360
20361         * Makefile.am : windows build fix.
20362
20363 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20364
20365         * iltests.il: Add new regression test.
20366
20367         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20368         #72522.
20369
20370 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20371  
20372         * mini.c: Moved linkdemand check into helper function check_linkdemand
20373         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20374         LDFTN, LDVIRTFTN).
20375
20376 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20377
20378         * declsec.c: Added statistics counter for different kinds of 
20379         LinkDemands.
20380         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20381         (and commented) declaration.
20382         * mini.c: Added statistics counter for security Demand code 
20383         generation. Added display of security statistics.
20384
20385 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20386
20387         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20388         Fix compilation errors under gcc-2.95.
20389
20390 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20391
20392         * mini.c, driver.c: Use the new jit trampoline hashtable
20393
20394 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20395
20396         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20397
20398 2005-02-11  Martin Baulig  <martin@ximian.com>
20399
20400         * debug-mini.c (mono_debug_close_method): Free the line number array.
20401
20402 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20403
20404         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20405         icalls.
20406
20407         * mini.h: Bump AOT file format version. 
20408
20409 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20410
20411         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20412         APTC and P/Invoke.
20413         * declsec.h: Added macros to get/set lazyly initialized security 
20414         informations about assemblies. Added new enum for different type of
20415         possible LinkDemand violation. Added function to check LinkDemands.
20416         * mini.h: Added a field to MonoCompile to hold any security violation
20417         detected when JITting a method (so it can be thrown later).
20418         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20419         and CEE_CALLVIRT. Added code to throw exception at the end of
20420         mini_method_compile (note: the exception is unhandled right now).
20421
20422 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20423
20424         * mini.c, jit-icalls.c: use the managed implementation of
20425         memset for initobj and memset, to avoid managed <-> unmanaged
20426         transitions.
20427
20428 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20431         optimization if it would need a GOT var.
20432
20433         * basic.cs: Add tests for constant propagation and switch statements.
20434
20435         * ssa.c: Fix out-of-range constant propagation and switch statements.
20436
20437 2005-02-09    <vargaz@freemail.hu>
20438
20439         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20440
20441 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20442
20443         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20444
20445 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20446
20447         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20448
20449 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20450
20451         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20452         arithmetic operations.
20453
20454 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20455
20456         * mini-ppc.c: add a workaround for broken user code that
20457         DllImports vararg functions with non-vararg signatures.
20458
20459 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20462         meaningfull error message for assemblies written in Managed C++.
20463
20464         * tramp-amd64.c mini-amd64.h: Add support for 
20465         create_trampoline_from_token ().
20466
20467         * aot.c mini-x86.c abcremoval.c: Applied patch from
20468         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20469
20470 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20471
20472         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20473         which takes a MonoImage/token as parameter instead of a MonoMethod.
20474
20475         * aot.c: Use the new trampoline for initializing vtables.
20476
20477         * aot.c: Add support for ldfld/stfld_remote wrappers.
20478
20479         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20480         rules for compare <MEM>, IMM.
20481
20482         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20483
20484         * aot.c: Handle inherited finalizers correctly.
20485
20486 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20487
20488         * inssel.brg (stmt): Add a missing _setup_... ().
20489
20490         * aot.c: Save some parts of the class state to the AOT file and use it
20491         to recompute that state when a class is initialized.
20492
20493         * mini.c: Install AOT hooks into the runtime.
20494
20495         * mini.h: Bump AOT file format version.
20496         
20497         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20498         Fixes #72148.
20499
20500         * iltests.il: Add new test.
20501
20502 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20503
20504         * mini.c: fix typo.
20505
20506 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20507
20508         * mini.c: setup the statistical profiler in the thread attach
20509         callback to cope with the new single thread code.
20510
20511 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20512
20513         * mini-ppc.c: ensure we have enough room for the profiler
20514         calls (fixed bug#72084).
20515
20516 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20517
20518         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20519         it.
20520
20521 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20522
20523         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20524
20525 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20526
20527         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20528         to succesfully execute parrotbench).
20529         * ssapre.h: Likewise.
20530
20531 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20532
20533         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20534         variable for stores to method arguments (fixes a SSAPRE issue).
20535
20536 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20537
20538         * mini.c: handle value types in dup, fixes gen-112.cs.
20539
20540 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20541
20542         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20543         sequence for calls in dynamic methods to avoid thunks.
20544
20545 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20546
20547         * mini.c: correctly remove dynamic methods from the hashtable.
20548
20549 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20550
20551         * driver.c: Disabled SSAPRE until fix the bug that appears
20552         in IronPython's parrotbench.
20553
20554 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20555
20556         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20557
20558         * mini.c (mono_method_to_ir): Revert the previous change.
20559         
20560         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20561         when AOT compiling.
20562
20563         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20564         mono_jit_info_table_find () etc. when running under valgrind.
20565
20566         * inssel.brg: Fix warnings.
20567
20568         * mini-exceptions.c: Fix warnings.
20569
20570 2005-01-31  Martin Baulig  <martin@ximian.com>
20571
20572         * driver.c (compile_all_methods_thread_main): Don't try to compile
20573         generic methods or anything which has type parameters.
20574
20575 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20576
20577         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20578
20579         * TestDriver.cs: Add --verbose flags.
20580
20581         * graph.c ssa.c: Fix 64 bit warnings.
20582         
20583         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20584         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20585         Fix 64 bit warnings.
20586
20587         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20588         variable not spotted by gcc.
20589         
20590         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20591         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20592         X86_COMPARE_MEMBASE opcodes.
20593
20594         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20595
20596 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20597
20598         * *: MonoMethod->signature might be NULL now. You *MUST* use
20599         mono_method_signature.
20600
20601 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20602
20603         * driver.c (compile_all_methods_thread_main): Compile the methods
20604         without invoking cctors.
20605
20606 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20607
20608         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20609         * basic-calls.cs: test for the above.
20610
20611 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20612
20613         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20614         MonoJitInfo changes.
20615
20616 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20617
20618         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20619         eagerly if it contains dynamic methods.
20620         
20621         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20622
20623         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20624         trace, it is now computed by an icall from trace_ips.
20625         
20626         * mini-exceptions.c: Fix a warning.
20627
20628 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20629
20630         * mini-exceptions.c: don't bother getting stack trace info if
20631         it's not going to be used.
20632
20633 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20634
20635         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20636         ssapre-mini-ops.h.
20637
20638 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20639
20640         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20641
20642         * aot.c: Avoid calling mono_method_get_header () if not needed.
20643
20644         * mini.h: Bump AOT file format version.
20645         
20646         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20647
20648         * mini.c (mono_print_tree): Print more info for calls.
20649
20650 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20651
20652         * declsec.h: Remove warning by adding missing include for marshal.h
20653
20654 2005-01-26  Martin Baulig  <martin@ximian.com>
20655
20656         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20657         `ip' twice.
20658
20659 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20660
20661         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20662         flags.
20663
20664         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20665
20666         * aot.c (mono_compile_assembly): Fix a warning.
20667
20668 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20669
20670         * declsec.c: Look for security attributes on the original MonoMethod 
20671         (and not the wrapped one). This fix permissions on icalls.
20672
20673 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20674
20675         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20676
20677         * mini.c (mono_allocate_stack_slots): Add a fixme.
20678
20679         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20680
20681 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20682
20683         * inssel.brg: optimize casts of sealed types (more
20684         optimizations waiting for fixes in remoting).
20685
20686 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20687
20688         * inssel.brg (stmt): Add another dummy rule.
20689
20690         * driver.c: Fix warnings.
20691
20692         * driver.c (mono_main): If running under valgrind, instruct glib to use
20693         the system allocation functions so valgrind can track the memory
20694         allocated by the g_... functions.
20695
20696         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20697
20698         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20699
20700         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20701
20702         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20703         variables in try regions.
20704
20705         * mini.c (mini_method_compile): Don't disable optimizations on large
20706         methods when AOT compiling.
20707
20708         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20709         allocate stack slots. Not yet used.
20710
20711 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20712
20713         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20714
20715 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20716
20717         * mini-ppc.c: make the branch info relative as the code
20718         buffer can be reallocated.
20719
20720 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20721
20722         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20723         * driver.c: Removed the AOT/security restriction. Now initialize the
20724         security manager (in metadata) if --security is used.
20725         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20726         rather than the pointer to declarative security, when AOT is used.
20727
20728 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20729
20730         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20731         basic blocks, reduced intrinsic exception throwing code size.
20732
20733 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20734
20735         * driver.c (mini_usage): Reorder the usage screen.
20736
20737 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * mini.c (mono_resolve_patch_target): Fix warning.
20740
20741 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20742
20743         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20744         previous patch.
20745
20746         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20747
20748         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20749         breaks the amd64 build.
20750
20751         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20752         register allocation. Fixes #71454.
20753
20754         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20755
20756         * arrays.cs: Add new regression test.   
20757
20758 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20759
20760         * ssapre.c: Turned usage of snprintf to GString.
20761         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20762         (I left it on by mistake in my previous commit).
20763
20764 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20765
20766         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20767         on cond branch optimization (fixes bug# 71515).
20768
20769 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20770
20771         * abcremoval.c: Fixed bug 71062.
20772         * abcremoval.h: Likewise.
20773
20774 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20775
20776         * mini.c: Added a new functionality to optimize_branches, the removal
20777         of useless basic blocks, and fixed some problem in the removal of
20778         critical edges; some utility functions added for both purposes.
20779         * ssapre.c: Added complex expression support, and fixed bug 70637.
20780         * ssapre.h: Likewise.
20781         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20782         enabled in SSAPRE.
20783         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20784         * driver.c: Re-enabled SSAPRE.
20785
20786 2005-01-19  Martin Baulig  <martin@ximian.com>
20787
20788         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20789         the result of mono_get_method_constrained().
20790
20791 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20792
20793         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20794         manager.
20795
20796 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20797
20798         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20799         be detected.  Fixes #59296.
20800
20801 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20802
20803         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20804         which can happen. Fixes #71361.
20805
20806 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20807
20808         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20809         manager.
20810
20811 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20814         appdomain-unload.exe to fail.
20815         
20816         * mini.c: Fix some memory leaks.
20817
20818 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20819
20820         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20821         Fixed bug and sped up some codepaths.
20822
20823 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20824
20825         * mini.c: Fix some memory leaks.
20826
20827         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20828         conversion.
20829
20830         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20831
20832         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20833         #71320.
20834
20835         * iltests.il: Add regression test for #71320.
20836
20837 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * mini.c (mono_codegen): Fix installation of profiler hooks.
20840
20841         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20842
20843 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20844
20845         * mini.h, mini.c, cfold.c: optimize access to enum
20846         readonly fields, too. Eval conditional branches if possible
20847         to perform unreachable code removal in more cases.
20848
20849 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20850
20851         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20852
20853         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20854         code manager.
20855
20856         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20857         WinXP DEP. Fixes #71244.
20858
20859 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20860
20861         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20862
20863 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20866
20867 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20868
20869         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20870         changes.
20871
20872         * mini.h: Bump AOT version.
20873
20874         * mini.h (MonoCompile): Change exvar to a hash table.
20875
20876         * mini.c: Allocate a separate exvar for each handler block.
20877
20878         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20879
20880         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20881         ex var with the pending exception and only throw if the two are equal.
20882         Fixes #68552.
20883         
20884         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20885
20886         * mini-x86.c: Fix warnings.
20887
20888         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20889         used by all the ports now.
20890
20891         * aot.c: Add write-symbols and save-temps options.
20892
20893 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20894
20895         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20896
20897 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20898
20899         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20900         operations.
20901
20902         * tramp-s390.c: Check vtable slot belongs to the domain.
20903
20904         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20905         as per other platforms.
20906
20907         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20908
20909 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20910
20911         * driver.c: we don't run the Main() code in a subthread anymore.
20912
20913 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20914
20915         * mini.c: added experimental rtc support in the statistical
20916         profiler: if the user has the permission, more accurate statistics
20917         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20918         The MONO_RTC value must be restricted to what the linux rtc allows:
20919         power of two from 64 to 8192 Hz.
20920
20921 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20922
20923         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20924
20925 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20926
20927         * mini-ppc.c: better icache flush for smp.
20928
20929 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20932
20933         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20934         amd64 port, not yet used.
20935
20936 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20937
20938         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20939         a struct type.
20940
20941 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20942
20943         * driver.c: Added --security option to activate the security manager.
20944         Right now this will allow code generation for declarative demands and
20945         is disabled when AOT is specified.
20946         * mini.c: Add code generation for declarative security demands.
20947         * mini.h: Add mono_use_security_manager as an extern gboolean.
20948
20949 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20950
20951         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20952         emitting more dense assembly code.
20953
20954         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20955         exception throwing stuff.
20956
20957 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20958
20959         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20960         dead code.
20961
20962         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20963         left in by mistake.
20964
20965         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20966         fixed.
20967
20968         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20969
20970         * tramp-*.c: Only patch vtable slots if the object is in the current
20971         domain. Fixes appdomain-unload.exe.
20972
20973         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20974         
20975         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20976         x86 branch.
20977
20978 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * mini.c (reverse_branch_op): New helper function.
20981
20982         * mini.c (optimize_branches): Run the new optimization only on 
20983         platforms which support it. Also reverse all kinds of branches.
20984
20985         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20986
20987         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20988         a throw statement.
20989
20990         * mini.c (optimize_branches): Reverse not-equals branches if the false
20991         bblock is a throw. This happens a lot of time with argument checking in
20992         corlib.
20993
20994         * mini.c (mono_codegen): Add support for placing basic blocks after
20995         the function epilogue.
20996
20997         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20998         function epilogue.
20999         
21000 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21001
21002         * mini.c (setup_stat_profiler): Only set this up if the platform
21003         supports ITIMER_PROF.
21004
21005 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21008         previous patch.
21009
21010         * inssel.brg: Fix a warning.
21011
21012 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21013
21014         * mini.c: added support for statistical profiler 
21015         (run with: --profile=default:stat).
21016
21017 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21018
21019         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21020
21021         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21022
21023         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21024         related to global registers from the amd64 port.
21025
21026 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21029
21030         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21031         with global registers.
21032         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21033
21034         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21035
21036 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * debug-mini.c (encode_value): Fix off-by-one.
21039
21040         * aot.c (encode_value): Likewise.
21041
21042         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21043
21044 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21045
21046         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21047         AOT.
21048
21049         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21050         
21051         * aot.c (emit_method_info): Increase size of temp buffer.
21052
21053         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21054         the AOT case.
21055
21056 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * aot.c (emit_method_info): Fix build.
21059         
21060         * aot.c: Further rework of the AOT file format to reduce the size of
21061         the method info data.
21062
21063         * mini.h: Bump AOT file format version.
21064
21065 2004-12-27  Martin Baulig  <martin@ximian.com>
21066
21067         * mini.c (mini_get_method): New static method; call
21068         mono_get_method_full() and mono_get_inflated_method().
21069         (mono_method_to_ir): Use mini_get_method() instead of
21070         mono_get_method_full(). 
21071
21072 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21073
21074         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21075
21076 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21077
21078         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21079
21080         * inssel-amd64.brg: Add some optimization rules.
21081
21082 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21083
21084         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21085         standard not GC'd stuff is fine.
21086
21087 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21088
21089         * aot.c: Rework the AOT file format to get rid of most of the global
21090         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21091
21092         * mini.h: Bump AOT file format version.
21093         
21094 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * mini.h: Bump AOT file format version.
21097
21098         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21099         address is inside a GOT.
21100
21101         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21102
21103         * cpu-pentium.md: Increase the maximum size of some instructions which
21104         might involve a got access.
21105         
21106         * mini.c (get_method_from_ip): Another debug helper function.
21107
21108         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21109         when got var accesses are created during the decompose phase.
21110
21111         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21112
21113         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21114         argument mini_compile_method and to MonoCompile, and use this to
21115         determine whenever a given method is compiled for AOT. This allows the
21116         other methods compiled during AOT compilation to be free of AOT stuff,
21117         so the backends does not need to add special support for them by
21118         creating a fake GOT etc.
21119
21120         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21121         longer needed.
21122
21123 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21124
21125         * mini.c (mono_method_to_ir): It turns out that some of the
21126         x-appdomain wrappers are lax with types, so just ignore this for
21127         all wrappers.
21128
21129         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21130         at the vtable->klass. If it is non-shared code we can just use the
21131         vtable.
21132
21133 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21134
21135         * mini-ppc.c: access MonoDomain from tls, too.
21136
21137 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21138
21139         * declsec.c: Removed unused variable (and related warning ;-)
21140
21141 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21142
21143         * iltests.il: New test for LDELEMA on an array of ref types.
21144
21145         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21146         all ldelema's on reftypes.
21147         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21148         it was the wrong place to put it.
21149
21150         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21151         register to pop to make this cleaner, at the request of Paolo.
21152
21153 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21154
21155         * mini-ops.h (OP_GETHASHCODE): New op.
21156
21157         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21158
21159         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21160         operation.
21161
21162         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21163         by 25%.
21164         
21165         * mini-x86.c (mono_arch_output_basic_block): Rather than
21166
21167         add ebp, 4
21168
21169         Emit
21170
21171         pop edx
21172
21173         The first is 3 bytes while the second is 1. This saves 36 kb on
21174         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21175         see a small boost because of icache locality.
21176
21177         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21178
21179 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21180
21181         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21182         started code sharing with the generic code.
21183
21184 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21185
21186         * mini-ppc.c, cpu-g4.md: added code for direct access to
21187         tls data slots.
21188
21189 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21190
21191         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21192          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21193         to OP_TLS_GET.
21194
21195 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21196
21197         * declsec.c|h: Added functions to cache the declarative stack modifiers
21198         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21199         structure.
21200         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21201         created. Register internal calls for System.Security.SecurityFrame::
21202         _GetSecurityFrame and _GetSecurityStack.
21203         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21204         the definitions for the new stack walk/callback mechanism.
21205         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21206         first security frame for LinkDemands and InheritanceDemands) and
21207         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21208         from lupus.
21209         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21210         walk initialization (lupus).
21211
21212 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21213
21214         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21215         idiom.
21216         (handle_loaded_temps): Do not create a temporary variable for
21217         things that we know are temps. They will never be modified.
21218         (mono_spill_call): Set MONO_INST_IS_TEMP
21219         (mono_emulate_opcode): ditto
21220         (emit_tree): ditto
21221         (mono_method_to_ir.CEE_DUP): ditto
21222
21223 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21224
21225         * mini.c (type_to_eval_stack_type): Make this handle the void type
21226         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21227         (emit_tree): use ip_in_bb to special case some common idioms
21228         Update all callers to pass in the IP.
21229         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21230
21231         This gives us a nice 2% speedup in mcs bootstrap.
21232
21233         * mini-x86.c (peephole_pass): Peephole pass to make
21234         mov  [foo], eax
21235         push [foo]
21236
21237         into
21238
21239         mov [foo], eax
21240         push eax
21241
21242         * mini.c (ip_in_bb): new method.
21243         (mono_method_to_ir): use this method rather than doing the hash
21244         lookup ourselves.
21245
21246         * linear-scan.c (mono_linear_scan): When expiring actives, you
21247         don't need to keep around variables that expire on this
21248         instruction. This makes it so that:
21249              a = b + 1
21250         will turn into:
21251              store (ebx add (ebx, 1))
21252         which will become
21253              add ebx, 1
21254
21255 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21258         combination to avoid doing two copies. Fix up problems with previous
21259         patch.
21260
21261         * mini.c: Fix 64 bit warnings.
21262
21263         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21264
21265 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21266
21267         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21268         changes from the x86 code.
21269
21270         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21271
21272 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21275         throwing code to reduce its size, unify the AOT and non-aot code and 
21276         get rid of relocations in the AOT case.
21277
21278         * mini-x86.h mini.c exceptions-x86.c 
21279         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21280         raise corlib exceptions which doesn't require relocations in the 
21281         caller.
21282
21283         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21284
21285 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21286
21287         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21288         needed.
21289
21290         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21291         in the AOT case.
21292
21293 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21294
21295         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21296         with add function when used from Inc/dec atomic 
21297         functions. Re-enabled optimization on x86.
21298         * mini-ops.h: renamed atomic_add functions to
21299         allow _add to match the Interlocked::Add and
21300         _add_next to match Interlocked::Inc/Dec.
21301
21302 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21303
21304         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21305         linking of BBs to the end BB, and enabled SSAPRE also with
21306         consprop and copyprop (which was prevented by that bug).
21307
21308 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21309
21310         * mini-x86.c: disabling the Interlocked optimizing code. 
21311
21312 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21313
21314         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21315         file version check.
21316         
21317 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21318
21319         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21320         interlocked optimization due lack of support on x86, rewrote 
21321         exchange to take into account that base may be in eax.
21322         
21323         xsp works again; activated Interlocked optimizing code.
21324         
21325 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21326
21327         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21328
21329 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21330
21331         * mini-ops.h: Add new opcodes.
21332
21333         * mini.h: Add new patch types. Add got_var to MonoCompile.
21334
21335         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21336         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21337         make it work with all kinds of patchable code.
21338
21339         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21340         address of the GOT, and referencing entries in the GOT.
21341
21342         * mini.c: Add code to load the GOT address if needed by an opcode.
21343
21344         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21345         independent AOT code on the x86 using an elf-style Global Offset Table.
21346
21347 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21348
21349         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21350
21351 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21352
21353         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21354         when running xsp.
21355
21356 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21357
21358         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21359         of Interlocked:Increment/Decrement/Add as inline ops.
21360         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21361
21362 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21363
21364         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21365         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21366
21367 2004-12-12  Duncan Mak  <duncan@ximian.com>
21368
21369         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21370         again. `patch_info->table_size' is no longer valid after Zoltan's
21371         commit #37636.
21372
21373 2004-12-12  Martin Baulig  <martin@ximian.com>
21374
21375         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21376         if we are the "real" method, ie. not an inlined method inside it.
21377
21378 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21379
21380         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21381         before we look in the special fields table. This fixes
21382         ../tests/thread-static-init.cs.
21383
21384 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21385
21386         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21387         for Array get_Rank and get_Length. Fixes bug #70465.
21388
21389 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21390
21391         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21392         separate structure to reduce the size of MonoJumpInfo.
21393
21394 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21395
21396         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21397
21398 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21399
21400         * mini.c (mini_get_inst_for_method): Changed to allow ports
21401         to return a MonoInst instead of opcode 
21402         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21403         
21404         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21405         Allow ports to return a created MonoInst instead of op-code, will enable
21406         new optimizations.
21407         (renamed mini_get_opcode_for_method to better reflected the functionality)
21408
21409 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21410
21411         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21412
21413 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21414
21415         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21416         Fixes #69985.
21417
21418 2004-12-08  Martin Baulig  <martin@ximian.com>
21419
21420         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21421         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21422
21423 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21426         correctly.
21427
21428         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21429         arithmetic.
21430
21431 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21432
21433         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21434
21435 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21436
21437         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21438         bug introduced by the previous patch.
21439
21440 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21441
21442         * mini-ppc.c, objectc.cs: handle large structs passed by value
21443         (fixes bug #69972).
21444
21445 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21446
21447         * mini-ppc.c: OP_ARGLIST implementation from
21448         Geoff Norton  <gnorton@customerdna.com>.
21449
21450 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21451
21452         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21453         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21454
21455 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21456
21457         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21458
21459 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21460
21461         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21462         support.
21463
21464 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21465
21466         * mini-sparc.c: Zero out localled-ed memory.
21467
21468         * iltests.il: Add tests for zeroing out localloc-ed memory.
21469
21470 2004-12-04  Martin Baulig  <martin@ximian.com>
21471
21472         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21473         mono_method_get_signature_full().       
21474
21475 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21476
21477         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21478         and some utility functions (always for SSAPRE), integrated SSAPRE.
21479         * mini.h: Likewise.
21480         * driver.c: Added ssapre option.
21481         * ssa.c: Small fix on OP_ARG handling.
21482         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21483         * Makefile.am: Likewise.
21484
21485 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21488         now in the xp code.
21489
21490         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21491         icall.
21492
21493 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21494
21495         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21496         
21497         * cpu-s390.md : Increase instruction length of oparglist.
21498
21499         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21500
21501 2004-11-30  Martin Baulig  <martin@ximian.com>
21502
21503         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21504         virtual generic methods.  We call a special helper_compile_generic_method()
21505         icall to retrieve the method from the vtable, inflate and compile
21506         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21507
21508         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21509
21510 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21513
21514 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21515
21516         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21517         Fixes #69929.
21518
21519 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21520
21521         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21522         platforms with PIC aot.
21523
21524 2004-11-28  Martin Baulig  <martin@ximian.com>
21525
21526         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21527         Fixes gen-112.cs.
21528
21529 2004-11-28  Martin Baulig  <martin@ximian.com>
21530
21531         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21532         the result of mono_type_get_underlying_type() to check whether
21533         we're byref.
21534
21535 2004-11-26  Martin Baulig  <martin@ximian.com>
21536
21537         * mini.c
21538         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21539         in the g_assert().
21540
21541 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21542
21543         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21544         the same way as the other arguments so they won't get clobbered.
21545
21546         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21547         calls through R11 since it is clobbered by the trampoline code.
21548
21549 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21550
21551         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21552         pick up in-tree mscorlib.dll.
21553
21554 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21555
21556         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21557
21558         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21559         runtime data/code are now stored in a table similar to the GOT in ELF. 
21560         This allows the code itself to be position independent.
21561
21562         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21563         loading changes.
21564
21565         * aot.c: Attach ELF type (object/function) directives to all global
21566         symbols.
21567
21568         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21569
21570         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21571
21572         * mini-amd64.h: Turn on PIC AOT code.
21573
21574         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21575         returning the offset within an OP_AOTCONST instruction where the GOT
21576         offset needs to be added.
21577
21578         * mini.h: Bump AOT file format version.
21579
21580 2004-11-25  Martin Baulig  <martin@ximian.com>
21581
21582         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21583         uninflated generic methods.
21584
21585 2004-11-25  Martin Baulig  <martin@ximian.com>
21586
21587         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21588
21589 2004-11-24  Martin Baulig  <martin@ximian.com>
21590
21591         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21592         original klass (this only applies for generic instances).
21593
21594 2004-11-24  Martin Baulig  <martin@ximian.com>
21595
21596         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21597         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21598         that array).
21599
21600 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21601
21602         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21603         localloc. Fixes #69678.
21604
21605         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21606         
21607 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21608
21609         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21610         used SSE registers on pinvoke calls. Fixes #69774.
21611
21612 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21613
21614         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21615         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21616
21617 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21618
21619         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21620         Refer directly to the mcs/ tree.
21621
21622 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21623
21624         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21625         Check if a trampoline for a synchronized method is required. 
21626
21627 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21628
21629         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21630         with localloc if needed. Throe arithmetric exception in
21631         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21632         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21633
21634 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21635
21636         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21637         types before switching on type.  Fixes #69622.
21638
21639 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21640
21641         * Makefile.am (check-local): New.  Integrate into 'make check'.
21642         (MCS,RUNTIME): Define using in-tree mono and mcs.
21643         (ILASM): New.
21644         (%.exe): Use $(ILASM).
21645
21646 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21647
21648         * mini-ppc.c: adjust initial prolog size (bug #69691).
21649
21650 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21651
21652         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21653         #69664.
21654
21655 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21656
21657         * Makefile.am (clean-local): Rename from 'clean'.
21658
21659 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21660
21661         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21662         to mono_arch_is_int_overflow. 
21663         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21664         SIGFPE events.
21665
21666 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21667
21668         * declsec.c|h: New files to support declarative security attributes.
21669         Added function to check if a method has (applicable) security.
21670         * mini.c|h: Add check for declarative security attributes in
21671         mono_method_check_inlining.
21672         * Makefile.am: Added declsec.c and declsec.h to the build.
21673
21674 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21675
21676         * mini.c, mini.h: update to keep dynamic code info per-domain.
21677
21678 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21679
21680         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21681         (mini_init): Get rid of it from here too.
21682
21683 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21684
21685         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21686         implemented OP_RETHROW (patch by Geoff Norton
21687         <gnorton@customerdna.com>).
21688
21689 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21690
21691         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21692         between appdomains.  Fixes appdomain-unload on PPC.
21693
21694 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21695
21696         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21697         mini-exceptions.c: handle the new wrapper types.
21698         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21699         token value as a MonoClass* when compiling a wrapper.
21700         mono_jit_create_remoting_trampoline now takes an additional
21701         MonoRemotingTarget parameter.
21702         
21703 2004-11-10  Martin Baulig  <martin@localhost>
21704
21705         * mini.c (mono_method_to_ir): Use `generic_container->context'
21706         rather than creating a new one.
21707
21708 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21709
21710         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21711
21712         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21713
21714 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21715
21716         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21717         the experimental aot cache stuff.
21718
21719 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21720
21721         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21722         mini-exceptions.c: update to exception clause structure changes.
21723
21724 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * exceptions-x86.c (throw_exception): Fix warnings.
21727
21728         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21729         for OP_RETHROW.
21730
21731 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21732
21733         * exceptions-sparc.c (get_throw_exception): Really fix this.
21734
21735 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21736
21737         * tramp-*.c: we no longer support icalls without wrappers, so
21738         a bit of code can be removed here
21739
21740 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21741
21742         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21743         patch.
21744
21745         * cpu-sparc.md: Add op_rethrow.
21746
21747         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21748
21749         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21750
21751         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21752         * mini-ops.h: Add OP_RETHROW.
21753
21754         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21755
21756         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21757
21758 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21759         
21760         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21761         Makes the output much easier to read
21762
21763 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21764
21765         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21766         prevents another huge leak when compiling with ssa. Secondly, the
21767         performance of doing this rather than freeing the lists is much
21768         better. GList does a lock every time you allocate a list link,
21769         so that it can use a memory pool. So, it is better to just use
21770         a memory pool of our own.
21771         
21772         * ssa.c, linear-scan.c: replace g_list_remove_link with
21773         g_list_delete.  The remove one does not free the GList, so we were
21774         leaking memory. On -O=all --compile-all with corlib, this cut down
21775         3 MB of allocations.
21776
21777 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21778
21779         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21780
21781         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21782
21783         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21784         into a new function mono_create_jit_trampoline ().
21785
21786 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21787
21788         * trace.c (get_spec): Allow tracing of classes without a namespace.
21789
21790 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21791
21792         * mini.c: Fix pointer overwrite in mini_method_compile.
21793
21794 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21795
21796         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21797         The darwin ABI needs some special handling for 1 and 2 byte structs
21798         Lets use lbz/lhz instead of lwz everywhere.
21799         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21800         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21801         Use stb/sth for the former, and put the latter always on stack instead of in
21802         argument registers.
21803
21804 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * trace.c (is_filenamechar): Add '_'.
21807
21808 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21809
21810         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21811
21812         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21813
21814 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21815
21816         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21817         depends on libmonogc. Fixes #68805.
21818
21819 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21820
21821         * mini.c (mono_jit_free_method): Provide extra information for
21822         this error.  Currently this leaks, but will be turned into a
21823         developer option in the future.
21824
21825 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21826
21827         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21828
21829 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21830
21831         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21832         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21833         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21834
21835 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21838         trampolines for AOT code.
21839
21840 2004-10-22    <vargaz@freemail.hu>
21841
21842         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21843         constructed types. Fixes #68136.
21844
21845 2004-10-21  Martin Baulig  <martin@ximian.com>
21846
21847         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21848         if it returns true, unwind the stack to the call instruction.
21849
21850 2004-10-21    <vargaz@freemail.hu>
21851
21852         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21853
21854         * mini.h: Bump AOT version number.
21855
21856         * objects.cs: Add another test for unbox trampolines.
21857
21858         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21859         valuetype methods.
21860
21861 2004-10-20    <vargaz@freemail.hu>
21862
21863         * driver.c: Add SHARED to the set of optimizations tested.
21864
21865         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21866
21867         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21868         used by CEE_NEWARR.
21869
21870         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21871
21872 2004-10-20  Martin Baulig  <martin@ximian.com>
21873
21874         * mini-exceptions.c (mono_handle_exception): Call
21875         mono_debugger_handle_exception() to tell the debugger about
21876         catch/finally clauses.
21877
21878 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21881
21882         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21883         #68447.
21884
21885 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21886
21887         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21888         methods as their native size, fixed bug #57543, #57545.
21889         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21890         This saves a temporary register and mullw call down into 1 (minor perf
21891         increase for cases like sum = sum * 5;  This use to translate into:
21892             li r11,5
21893             mullw r28,r28,r11
21894         It now translates to
21895             mulli r28,r28,5
21896
21897 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21900         #68388.
21901
21902 2004-10-11  Martin Baulig  <martin@ximian.com>
21903
21904         * mini.c (mono_method_to_ir): If we're a generic method, get the
21905         MonoGenericContainer from our MonoMethodNormal and create a
21906         MonoGenericContext from it.
21907
21908 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21911
21912         * basic-long.cs: Add test for checked i8->i2 cast.
21913
21914 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21915
21916         * inssel-ppc.brg: added a couple of speedup rules.
21917
21918 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21919
21920         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21921         to speed up rebuilds.
21922
21923 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21924
21925         * mini-s390.c: Minor fix to OP_OR_IMM.
21926
21927 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21928
21929         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21930         better. Fixes appdomain-unload.exe on sparc.
21931
21932 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21933
21934         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21935         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21936         see bug 67324.
21937
21938 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21941
21942 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21943
21944         * mini.c: Always generate a field read/write wrapper for members
21945         of the class MarshalByRefObject since the actual instance could
21946         be a CBO.
21947
21948 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21949
21950         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21951
21952 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * driver.c mini.h trace.c: Move the setting of the main assembly into
21955         a separate function called mono_trace_set_assembly () and call it after
21956         actually loading the main assembly. Fixes #66872.
21957
21958 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21959
21960         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21961         using the code manager.
21962
21963 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21964
21965         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21966
21967 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * cpu-amd64.md: Fix bug in previous patch.
21970         
21971         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21972         #66650.
21973
21974 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21975
21976         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21977         mini-exceptions.c: updates for changed stack walk interface.
21978
21979 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21980
21981         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21982
21983 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21984
21985         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21986
21987 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21990         since assemblies can't be unloaded.
21991         
21992 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21993
21994         * cpu-amd64.md: Fix more instruction lengths.
21995
21996         * cpu-amd64.md: Fix lengths of some instructions.
21997
21998 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21999
22000         * inssel.brg: Make the array ldelema check aot friendly.
22001
22002 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22003
22004         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22005
22006         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22007
22008 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * mini-x86.c: Fix build.
22011
22012         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22013         mono_type_get_underlying_type () helper function to simplify code.
22014         
22015 2004-09-09  Martin Baulig  <martin@ximian.com>
22016
22017         * mini-amd64.c: Don't access `type->data.klass' directly, call
22018         mono_class_from_mono_type() instead since the type may be a
22019         generic instance.
22020
22021 2004-09-09  Martin Baulig  <martin@ximian.com>
22022
22023         * mini-amd64.c (get_call_info): Fix support for generic instances.
22024         (add_valuetype): Use mono_class_from_mono_type() to get the class
22025         since we can be a generic instance.
22026
22027 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22028
22029         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22030
22031 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22032
22033         * liveness.c: reset spill costs on each scan: bug 62107
22034
22035 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22036
22037         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22038         unnecessary line that doesn't compile
22039
22040 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22041
22042         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22043         trampolines, make them call an error function so people can fix their
22044         code.
22045
22046 2004-09-06  Martin Baulig  <martin@ximian.com>
22047
22048         * mini.c (mono_method_to_ir): When initializing locals, handle a
22049         generic instances like a valuetype if it's a valuetype and like a
22050         class if it's a class.
22051
22052 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22053
22054         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22055         stack. Fixes #64674.
22056
22057         * exceptions.cs: Add test for unwinding of call arguments.
22058
22059 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22060
22061         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22062         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22063         set the carry/borrow flag). The sparc and s390 implementations
22064         can now use optimized versions (and simplify the code). ppc bugfixes.
22065
22066 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22069
22070 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22071
22072         * inssel-amd64.brg: Remove leftover 32 bit rule.
22073
22074         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22075
22076 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22079         mono_arch_find_jit_info functions into a new function. Fix a memory
22080         leak.
22081
22082         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22083         refactored code.
22084         
22085 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22088         as well.
22089         
22090         * exceptions.cs: Add array size tests.
22091
22092         * mini.c: Allocate a separate icall wrapper for each arity of 
22093         mono_array_new_va. Fixes #59509.
22094
22095         * exceptions.cs: Add testcase for 64578.
22096
22097         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22098
22099         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22100         
22101 2004-09-02  Martin Baulig  <martin@ximian.com>
22102
22103         * mini.c (mono_method_to_ir): When initializing the locals, call
22104         handle_initobj() on the generic instance itself, not its
22105         underlying type.
22106
22107 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22108
22109         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22110         MonoJitInfo for dynamic methods.
22111
22112         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22113
22114         * mini.c: Add support for freeing JIT data for dynamic methods.
22115         
22116 2004-09-01  Martin Baulig  <martin@ximian.com>
22117
22118         * mini-x86.c (is_regsize_var): Added support for generic
22119         instances.
22120         (mono_arch_emit_prolog): Make this compile again, use
22121         `x86_push_imm_template (code)'.
22122
22123 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22124
22125         * mini-x86.c: make all push_imm instructions that get
22126         patched always emit the long form
22127
22128 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22131         in a per-domain hash.
22132
22133         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22134         types.
22135
22136 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22139         work.
22140         
22141         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22142         work.
22143
22144         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22145         Beginnings of SSE2 support.
22146
22147         * exceptions.cs: Add more tests for checked int<->uint casts.
22148
22149 2004-08-28  Martin Baulig  <martin@ximian.com>
22150
22151         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22152         generic instances.
22153
22154         * mini.c
22155         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22156         Handle generic instances recursively.
22157
22158 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22159
22160         * iltests.il: test for conv.u8 on a constant
22161
22162 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22163
22164         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22165         LCONV_x4 (shrun_32 (membase)).
22166
22167 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22168
22169         * inssel-x86.brg: c&p rules for push/setret of long
22170
22171 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22172
22173         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22174         compare (regvar, base)
22175
22176         * inssel-x86.brg: more burg love
22177
22178         * inssel.brg: more cleanup
22179
22180         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22181
22182 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22183
22184         * basic-long.cs, basic-calls.cs: new tests for optimization.
22185
22186 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22187
22188         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22189         patch.
22190
22191 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22194         
22195 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22196
22197         * inssel.brg (mini_emit_memcpy): use 
22198         NO_UNALIGNED_ACCESS to disable memcpy optimization
22199
22200 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22201
22202         * mini-amd64.c: Handle generic types in various places.
22203
22204         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22205
22206 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22207
22208         * mini.c (handle_box): Fix warning.
22209
22210         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22211
22212         * mini-amd64.h: Enable the emit_state optimization.
22213
22214         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22215
22216         * mini-amd64.c: Add some new 64 bit peephole opts.
22217
22218         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22219
22220         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22221
22222         * mini-amd64.c: Register allocator fixes.
22223
22224         * mini.c: Add an optimization to emit_state to avoid allocation of new
22225         registers on some platforms.
22226
22227 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22230
22231         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22232         allocation. Fixes #63085.
22233
22234         * basic-long.cs: Add new regression test.
22235
22236         * mini-amd64.c: Register allocator improvements.
22237
22238 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * mini-amd64.c (read_tls_offset_from_method): Add another code
22241         sequence.
22242
22243         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22244         instruction sequence for nullifying class init trampolines.
22245
22246         * objects.cs: Add new regalloc test.
22247
22248         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22249
22250 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22251
22252         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22253         
22254         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22255         arguments.
22256
22257         * driver.c: Fix profiling after TLS changes.
22258         
22259         * driver.c (mono_main): Set mono_stats.enabled if needed.
22260
22261         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22262         CEE_BOX.
22263
22264 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22265
22266         * mini-x86.c: use a 1 op rather than a 2 op tls access
22267         instruction -> faster.
22268
22269 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22270
22271         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22272         x86 backend.
22273
22274 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22275
22276         * exceptions-sparc.c (throw_exception): fix typo
22277
22278 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22279
22280         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22281         set tree->dreg correctly with tls. Allow any
22282         register to be used.
22283
22284         * mini-x86.c (read_tls_offset_from_method): add new code
22285         generation pattern seen with GCC.
22286
22287
22288 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22289
22290         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22291         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22292         exceptions-sparc.c: fix some performance issues in exception
22293         handling and setting of the stack trace for exceptions that were
22294         already thrown.
22295
22296 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22297
22298         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22299         x86 backend.
22300         
22301         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22302         registers.
22303
22304 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22305
22306         This patch inlines tls access, when possible.
22307         
22308         * mini.h: new arch functions for TLS intrinsics.
22309         All platforms updated with a stub.
22310
22311         * mini.c: use the new intrinsics
22312
22313         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22314         arch specific intrinsic for tls variables
22315
22316 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22319         under windows.
22320
22321 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22322
22323         * mini.c: thread local allocation
22324
22325 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22328
22329         * Makefile.am: Link against the static version of libmonogc.
22330         
22331         * Makefile.am: Link the static versions of the convenience libraries
22332         into the mono executable.
22333
22334         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22335
22336 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22337
22338         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22339         on integer overflow.
22340
22341         * mini-amd64.c: Reorganize function call code.
22342
22343         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22344
22345 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22346
22347         * inssel-x86.brg: use xor eax,eax.
22348         
22349         * basic.cs: new tests
22350
22351 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22352
22353         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22354         in exception throwing code.
22355         
22356 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22357
22358         * inssel-x86.brg: use xor esi,esi.
22359
22360 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22361
22362         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22363         can trace methods compiled during mini_init () too.
22364
22365         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22366         CEE_CONV_U4.
22367
22368 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22369
22370         * Makefile.am: static link on x86 (r=zoltan)
22371
22372 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22373
22374         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22375         code since it causes some programs to fail.
22376
22377 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22378
22379         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22380
22381 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22382
22383         * mini.c: ovfops_op_map - add STACK_OBJ case for
22384         CONV_I 
22385         * basic.cs: add test_0_pin_string as test
22386         case for above.
22387
22388 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22389
22390         * Makefile.am: build C# if srcdir != builddir
22391
22392 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22393
22394         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22395         fall-through blocks.
22396
22397 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22398
22399         * driver.c: enable loop by default again and include abcrem in -O=all.
22400
22401 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * iltests.il: Add some localloc tests.
22404
22405         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22406
22407         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22408         Fixes #62574.
22409
22410         * inssel-amd64.brg: Add some optimizations.
22411
22412         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22413         for gcc-3.4.
22414
22415         * Makefile.am: Statically link mono against libmono on AMD64.
22416         
22417         * mini-amd64.c inssel-amd64.brg: Optimizations.
22418
22419 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22420
22421         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22422
22423         * tramp-amd64.c: Patch calling code in trampolines.
22424
22425 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22426
22427         * mini-amd64.c: pinvoke struct passing fixes.
22428
22429 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22430
22431         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22432         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22433
22434 2004-08-05  Duncan Mak  <duncan@ximian.com>
22435
22436         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22437         CEE_LDELEM_ANY.
22438
22439 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22440
22441         * mini-amd64.c (emit_move_return_value): Move return value for normal
22442         calls too.
22443
22444 2004-08-05  Martin Baulig  <martin@ximian.com>
22445
22446         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22447         `type->type'; just modify `type' itself when dealing with enums
22448         and generic instances.
22449         (check_call_signature): Make `simple_type' a `MonoType *'.
22450
22451 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22452
22453         * mini.c: Use OP_PADD to add offsets to addresses.
22454
22455         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22456
22457 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22458
22459         * mini-sparc.c (mono_arch_emit_epilog): fix check
22460         for folding last op into restore instruction
22461
22462 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22463
22464         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22465         helper methods using the code manager.
22466         
22467         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22468
22469         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22470
22471 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22472         
22473         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22474           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22475
22476         * mini-s390.c: fix tail processing
22477
22478 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22479
22480         * mini-ppc.c: mul.ovf.un exception name fix.
22481
22482 2004-08-03  Martin Baulig  <martin@ximian.com>
22483
22484         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22485         instances; before jumping to `handle_enum', also modify `ptype'.
22486
22487 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22488
22489         * cpu-sparc.md: fcall maximal length too small.
22490
22491 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22492
22493         * mini-amd64.c mini.h: Add initial support for passing/returning 
22494         structures to/from pinvoked methods.
22495
22496 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22497
22498         * mini-ppc.c: reg allocator fix.
22499
22500 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22501
22502         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22503
22504         * inssel.brg: Optimize memset on 64 bit machines.
22505
22506         * mini-amd64.c: Fix some vararg cases.
22507
22508 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22509
22510         * mini-s390.c: Corrected macro in emit_float_to_int
22511
22512         * s390-abi.cs: Tests to exercise the s390 ABI
22513
22514 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22515
22516         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22517         caller saved regs.
22518
22519         * basic.cs: Add a test for add.ovf.un.
22520
22521 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22522
22523         * mini-sparc.c: add case for OP_IDIV_UN
22524
22525 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22526
22527         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22528         
22529         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22530
22531 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22532
22533         * basic.cs: regression tests.
22534
22535         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22536         regressions.
22537
22538 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22539
22540         * basic.cs: Add a new test.
22541
22542         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22543         and AOT. Various fixes and optimizations.
22544
22545         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22546
22547 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22548
22549         * mini-ppc.c: make sure temp regs are not used for global reg
22550         allocation.
22551
22552 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22553
22554         * cpu-sparc.md: conv_i8 fix for 64bits
22555
22556         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22557
22558 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22559         
22560         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22561         add opcode for cmp BYTE PTR [eax], imm.
22562
22563         * inssel.brg: Make memcpy and memset takes bases.
22564
22565 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * *-amd64.*: More AMD64 work.
22568         
22569 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22570
22571         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22572         add a compare-not-equal opcode.
22573         
22574 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22575
22576         * mini.c: Use mono_init_from_assembly instead of mono_init.
22577         
22578 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22581
22582         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22583
22584         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22585
22586         * inssel.brg: 64 bit fixes.
22587
22588         * mini.h (MonoCallInst): Add some AMD64 specific data.
22589
22590         * mini.h: Add some OP_P opcodes.
22591
22592 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22593
22594         * basic.cs: tests for 61797 and 61740
22595
22596 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22597
22598         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22599         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22600
22601 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22604
22605         * *-amd64*.*: Ongoing AMD64 work.
22606
22607 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22608
22609         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22610
22611         * *-amd64*: Ongoing AMD64 work.
22612
22613         * mini-arch.h: Add AMD64 support.
22614
22615         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22616
22617         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22618
22619         * mini-ops.h: Add new opcodes.
22620
22621         * Makefile.am: Add AMD64 support.
22622
22623         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22624         rules into the inssel-long*.brg files.
22625
22626         * *-amd64.*: Add beginnings of AMD64 backend.
22627
22628 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22629
22630         * mini.c (print_dfn): commenting out the code that prints
22631         the cil. With -O=deadce, this makes -v -v crash.
22632         
22633         * cpu-pentium.md: make checkthis have a length of 2
22634
22635 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22636
22637         * mini-sparc.h: fix implementations of __builtin
22638         functions for Sun compiler for V9.
22639
22640 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22641
22642         * mini.c: use the new stelem.ref wrapper
22643         * exceptions.cs, arrays.cs: new stelem.ref tests
22644
22645 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22646
22647         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22648         new XSP should work with these changes).
22649
22650 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22651         
22652         * inssel-{long32,x86,}.brg: trivial optimizations.
22653         
22654 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22655
22656         * mini.c: load value when emitting box operation in
22657         constrained calls.
22658
22659 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22660
22661         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22662         is one byte shorter than cmp DWORD PTR [eax], 0.
22663
22664 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22665
22666         * inssel-ppc.brg: arguments on the stack are always
22667         relative to the stack pointer (spotted by Neale Ferguson).
22668
22669 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22670
22671         * exceptions-x86.c: delay appending the method name to the trace until
22672         after mono_jit_info_table_find is called, as this gets the real
22673         MonoMethod.
22674
22675 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22676
22677         * aot.c: register roots
22678
22679 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22680
22681         * aot.c : I could just use PLATFORM_WIN32 flag.
22682
22683 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22684
22685         * aot.c : Reverting the previous fix. This time it broke linux build.
22686
22687 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22688
22689         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22690
22691 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22692
22693         * mini.c (handle_stack_args): Remove some more debugging code.
22694         
22695         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22696
22697         * driver.c mini.h aot.c: Allow additional options to be specified with
22698         --aot and pass them to mono_compile_assembly.
22699
22700         * aot.c: Add experimental code to AOT compile all loaded assemblies
22701         on demand and save the code into a cache in the filesystem.
22702
22703         * aot.c: Add support for more wrapper methods.
22704         
22705         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22706         58863.
22707
22708         * cpu-*.md: Remove removed opcodes.
22709
22710         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22711         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22712         related icalls to marshal.c.
22713
22714 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22715
22716         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22717
22718         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22719
22720         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22721
22722 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22723         * liveness.c: If liveness is recomputated we need to reset the information
22724         for each variable. This way, if the liveness range has been narrowed
22725         by optimizations that happened after the last computation, we can return
22726         a smaller range.
22727         
22728         For example, if you have
22729         
22730         {
22731                 int i = 0;
22732                 
22733                 // Tons of code that does not affect i
22734                 
22735                 i = foo ();
22736                 ...
22737         }
22738         
22739         i = 0 is dead code and will be removed by SSA. However, when
22740         linear scan gets to the code, i will still appear to be live
22741         throughout the entire block. This prevents good register allocation.
22742
22743 2004-07-06  Martin Baulig  <martin@ximian.com>
22744
22745         * debug-mini.c (mono_debug_init_method): Allow
22746         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22747         (mono_debug_add_icall_wrapper): New method.
22748
22749         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22750
22751 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22752
22753         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22754         optimization.
22755
22756 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22757
22758         * aot.c (mono_aot_load_method): Fix loading of debug info.
22759
22760 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22761
22762         * aot.c: Add logging support.
22763
22764 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22765
22766         * mini.h: Add prototype for mono_print_method_from_ip.
22767
22768         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22769
22770         * inssel.brg: 64 bit fixes.
22771
22772         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22773         inssel-long32.brg.
22774
22775         * Makefile.am: Add SPARC64 support.
22776
22777 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22778
22779         * aot.c: Fix alignment problems on 32 bit platforms.
22780
22781 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22782
22783         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22784         SPARC64.
22785
22786         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22787         problems.
22788
22789         * mini.h: Bump AOT file version. Some 64 bit fixes.
22790
22791 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22792
22793         * inssel-sparc.brg: Add new rule to avoid register moves.
22794
22795         * inssel.brg: Add ldind_to_load_membase helper function.
22796
22797 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22798
22799         * mini.c: OffsetToStringData intrinsic.
22800         
22801 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22802
22803         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22804
22805         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22806         regression tests.
22807
22808         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22809 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22810
22811         * mini.c: reinstated mono_compile_get_interface_var()
22812         on x86, too, since the change breaks the Gtk# build there as well.
22813
22814 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22815
22816         * driver.c: remove loop from the default optimizations: it seems to
22817         interact badly with some of the other options (see bug #60613).
22818
22819 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22820
22821         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22822         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22823
22824 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22825
22826         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22827         vararg-using methods.
22828
22829 2004-06-21  Martin Baulig  <martin@ximian.com>
22830
22831         * mini/mini-exceptions.c
22832         (mono_handle_exception): Added `gpointer original_ip' argument.
22833         After calling mono_unhandled_exception(), call
22834         mono_debugger_unhandled_exception() and if that returns true,
22835         restore the context and return.
22836
22837 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22838
22839         * mini-ppc.c: prefer the use of relative branches so
22840         they won't need to be patched in aot code (patch from Patrick Beard).
22841
22842 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22843
22844         * aot.c: patch from Patrick Beard to make the output assembly
22845         more correct for the MacOSX assembler. Small tweak to
22846         generate sane images on Linux/PPC, too.
22847
22848 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22849
22850         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22851         case until bug #59509 is fixed (shows up in #60332).
22852
22853 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22854
22855         * mini.c: make sure the needed wrappers are compiled, too, with
22856         precomp.
22857
22858 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22859
22860         * driver.c: remove NPTL reference in --version output.
22861
22862 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22863
22864         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22865         generate valid assembly for the Mach-O assembler.
22866
22867 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22868
22869         * driver.c: don't include abcrem in the all optimization specifier
22870         since it slows down jit compilation too much for now.
22871
22872 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22873
22874         * mini.c: use BIGMUL only if both operands have the same signage.
22875         * iltests.il: Test for bug 60056. (errors related to signage in
22876         BIGMUL).
22877
22878         r=lupus.
22879
22880 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22881
22882         * mini.c, aot.c: memory leak fixes.
22883
22884 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22885
22886         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22887
22888 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22889
22890         * Makefile.am: remove the -static hack completely, it links in
22891         statically glib as well.
22892
22893 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22894
22895         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22896         * exceptions.cs: make it compile with new mcs/csc.
22897
22898 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22899         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22900         and added relevant test case.
22901
22902 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22903
22904         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22905         regressions in gtk-sharp.
22906
22907 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * exceptions.cs: New regression tests.
22910
22911         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22912
22913 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22914
22915         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22916
22917 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22918
22919         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22920
22921         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22922
22923 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22924
22925         * mini.c (mono_jit_runtime_invoke): Init class in this
22926         method instead of trusting mono_jit_compile_method to
22927         do the work (because wrappers can be in object class)
22928
22929 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22930
22931         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22932
22933         * basic-long.cs: New regression test.
22934
22935 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22936
22937         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22938         and div/rem checks.
22939
22940 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22941
22942         * Makefile.am: fix miguel's change to build mono statically against
22943         libmono (track build dependencies).
22944
22945 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22946
22947         * cfold.c: Some glib versions do not have G_MININT32.
22948
22949 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22950
22951         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22952         with precision of tan, atan, sin and cos, and implemented related
22953         regressions tests (fixes bug 54467, but one new problem appeared and
22954         is not fixed yet).
22955
22956 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22957
22958         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22959
22960         * exceptions.cs: Add test for constant folding && division by zero.
22961
22962         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22963         since driver.c is in libmono too, so the optimization was useless.
22964
22965         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22966         variable to driver.c so the compiler can emit more efficient code to
22967         access them.
22968
22969 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22970
22971         * Makefile.am: don't distribute generated inssel.[ch] files.
22972
22973 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22976         into the default appdomain. Fixes #58707.
22977
22978         * jit-icalls.c: Remove the broken approximation for truncl, doing
22979         no conversion is better.
22980
22981         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22982         Fixes #58863.
22983
22984 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22985
22986         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22987         of the mcrxr instruction which is not available on some processors
22988         even if it's documented to be. Implement add and sub overflow correctly
22989         (still not complete for long unsigned). Speed up icalls a bit.
22990
22991 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22992
22993         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22994         we run .cctor in the current domain instead of target_domain.
22995         
22996         Fixes bug #58558, .cctor not being called in -O=shared.
22997
22998 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22999
23000         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23001
23002 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23003
23004         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23005         which can be done with an imm8, do it that way.
23006         (mono_arch_output_basic_block): ditto for a jmp
23007         (mono_arch_emit_prolog): Computate maximum offset of a label.
23008
23009 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23010
23011         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23012         now tries to allocate prefered physical reg's for virtual
23013         regs. This reduces the number of emited spills/loads with
23014         20-30% on our core assemblies.
23015
23016 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23017
23018         * jit-icalls.c: truncl() is not needed and trunc() is
23019         the correct thing to do anyway (bug #58287).
23020
23021 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23024         if available.
23025
23026 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23027
23028         * driver.c: enable loop optimizations by default.
23029
23030 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23031
23032         * mini-x86.c: fix calc of max loop size when aligning loops start.
23033
23034 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23035
23036         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23037         the stack.
23038
23039 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23040
23041         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23042         should set carry.
23043
23044         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23045
23046         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23047         
23048         * mini.c (inline_method): Allways inline some wrappers even if the cost
23049         is too large. Fixes #58785.
23050
23051         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23052         
23053 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23054
23055         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23056         (crichton@gimp.org). Beginning of support for sparc/linux.
23057
23058         * mini-sparc.c: Optimize retrieval of LMF address.
23059
23060 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23061
23062         * exceptions-ppc.c:  handle alloca in methods with clauses.
23063
23064 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23065
23066         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23067
23068 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23069
23070         * mini.c: Delegate most of the abort signal work to 
23071           mono_thread_request_interruption, which also handles Stop and Suspend
23072           states.
23073
23074 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23075
23076         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23077         supports the save/restore lmf opcodes.
23078
23079 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23080
23081         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23082         by gcc-3.4 as well.
23083
23084         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23085
23086 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23087
23088         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23089         methods which contain array accesses.
23090
23091         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23092         boundaries. Fixes #58537.
23093
23094         * iltests.il: Add regression test for #58537.
23095
23096 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23097
23098         * mini-x86.c (mono_arch_local_regalloc): Last part of
23099         fix for bug #58633 (releasing register to early).
23100
23101 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23102
23103         * basic-long.cs: Add new regression test.
23104
23105 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23106
23107         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23108         register too early on the chain.
23109
23110 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23111
23112         * mini.c (create_helper_signature): Use a helper function to reduce
23113         the code which needs to be written. Also set the calling convention of
23114         icalls on windows. Fixes #57840.
23115
23116 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23117
23118         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23119         exceptions-ppc.c: added helper function to get the instruction address
23120         from a signal handler context.
23121
23122 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23123
23124         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23125         from gonzalo.
23126
23127 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23128
23129         * helpers.c: Add new env variable to pass args to objdump.
23130         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23131
23132 2004-05-17  Radek Doulik  <rodo@ximian.com>
23133
23134         * Makefile.am (common_sources): added abcremoval.h so it get
23135         disted and daily mono packages on go-mono.com will build again
23136
23137 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23138
23139         * abcremoval.c: Fixed coding style, added copyright header.
23140
23141         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23142
23143         * mini.h: Added prototype for abc removal main function.
23144
23145         * build_relations_propagation_table.pl: Added copyright header.
23146
23147 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23148
23149         * basic-long.cs: reg test for complex ceq_long bug.
23150
23151 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23152
23153         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23154         reg in long and clob case (bug #58343). Fixed/added comments.
23155
23156 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23157
23158         * mini.c (mono_jit_runtime_invoke): Follow new convention
23159         of calling the invoke method with an function pointer.
23160
23161 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * ChangeLog: Fix author of memory leak patch.
23164
23165 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23166
23167         * Makefile.am: fix make dist as well...
23168
23169
23170 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23171
23172         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23173         on archs where pointers are 4 bytes long.
23174
23175         * Makefile.am: Added abcremoval.c source file.
23176
23177         * abcremoval.c: Added abcremoval.c.
23178
23179         * abcremoval.h: Added abcremoval.h.
23180
23181         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23182
23183         * inssel.brg: Enabled bounds check removal.
23184
23185         * mini.c: Added support for abcrem optimization.
23186
23187         * mini.h: Added abcrem optimization label.
23188
23189         * driver.c: Added support for abcrem optimization.
23190
23191         * propagated_relations_table.def: Added propagated_relations_table.def.
23192
23193 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23194
23195         * mini.c, cfold.c: fix style.
23196
23197 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23198
23199         * mini.c: handle issue with the low-level implementation of
23200         some long opcodes (bug #54209).
23201
23202 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23203
23204         * basic.cs: test for my new cmov stuff.
23205
23206 2004-05-13      Patrik Torstensson
23207
23208         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23209         opt and added peephole documentation.
23210
23211 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23212
23213         * tramp-ppc.c: rewrote the generic trampoline code.
23214
23215 2004-05-11      Patrik Torstensson
23216
23217         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23218
23219 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23222
23223         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23224         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23225
23226         * mini.c: Add new icalls for AsAny marshalling.
23227
23228 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23229
23230         * tramp-ppc.c, mini-ppc.c: more cleanups.
23231
23232 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23233
23234         * mini.c: no warnings.
23235
23236 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23239
23240 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23241
23242         * mini.c: In the thread abort signal handler, if the thread is in the
23243         process of being stoped, don't throw the Abort exception, just stop the
23244         thread.
23245
23246 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23247
23248         * tramp-ppc.c: removed old code.
23249
23250 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23251
23252         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23253         do some simple speed optimizations on ppc.
23254
23255 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23256
23257         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23258         and large offsets in load/store.
23259
23260 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23261
23262         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23263         it causes regressions.
23264
23265 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23268         support.
23269
23270 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23271
23272         * jit-icalls.c: remove warnings.
23273         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23274         speedups for unsafe code.
23275
23276 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23277
23278         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23279
23280 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23281
23282         * basic-calls.cs: Add new regression test.
23283
23284         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23285         more portable.
23286
23287         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23288
23289         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23290         is no longer used.
23291
23292 2004-05-06      Patrik Torstensson
23293
23294         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23295         long reg allocation in any reg (not only eax:edx) and implemented 
23296         long shl/shr ops in asm instead of helpers.
23297
23298 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23299
23300         * mini-sparc.h: Fix warnings.
23301
23302         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23303         stack.
23304
23305         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23306         separate statement for clarity.
23307
23308         * mini-sparc.c: Update status.
23309
23310 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23311
23312         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23313         here.
23314
23315 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23316
23317         * inssel-ppc.brg: another small pre-release workaround:
23318         we don't do overflow detection for long_sub_un.
23319
23320 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23321
23322         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23323         (also works around a weird ppc bug: 57957).
23324
23325 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23326
23327         * tramp-ppc.c: trampoline fixes.
23328
23329 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23330
23331         * mini-ppc.c: fixed typos.
23332
23333 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23334
23335         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23336         at the top of the stack. Fixed typos. Use a frame registers
23337         for all the methods with exception clauses.
23338
23339 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23340
23341         * exceptions-ppc.c: restore fp registers.
23342
23343 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23344
23345         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23346         order from the stack top (moved the stack room to save the
23347         return value for trace after the param area). Fixed corruption
23348         in restoring registers on unwind.
23349
23350 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23351
23352         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23353
23354 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23355
23356         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23357         and prolog/epilog for methods that use it. Allow
23358         enough param area room for varargs methods. Fix miguel's
23359         breakage in exception handling.
23360
23361 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23362
23363         * Makefile.am: run genmdesc only on current arch.
23364
23365 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23366
23367         * exceptions-x86.c:
23368         * mini-x86.h: fix the build on windows.
23369
23370 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * 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.
23373
23374         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23375
23376         * mini-exceptions.c: New file.
23377         
23378         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23379         Move some parts of the x86 exception handling code to an 
23380         arch-independent file so it can be shared with other ports.
23381
23382 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23383
23384         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23385
23386 2004-04-26  David Waite  <mass@akuma.org>
23387
23388         * driver.c: remove comma from end of enumeration declaration
23389
23390 2004-04-26  Jackson Harper  <jackson@ximian.com>
23391
23392         * driver.c: parse config file before loading first assembly. This
23393         allows the user gac to be enabled/disabled. 
23394         
23395 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23396
23397         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23398         simpler mechanism: we do not care what is encoded initially
23399         (branch absolute or relative), we care about the code and its
23400         target.  I kept the old code for reference for now.
23401
23402         The new code tries first to determine if the jump is anywhere in
23403         the -/+32 absolute meg range, if it succeeds, it encodes using the
23404         absolute branch;  If not, it tried to find something in the
23405         relative range, if not, it uses the handle_thunk code. 
23406
23407 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23408
23409         * exceptions-ppc.c: use the correct ip register on macosx.
23410
23411 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23412
23413         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23414
23415 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23416
23417         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23418         Raise exception on integer divide by zero by hand since the hw
23419         doesn't support it. Handle NaNs in FP compares.
23420
23421 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23422
23423         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23424         code reducing duplication between the platforms and enabled
23425         signal exception handling (on linux for now).
23426
23427 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23428
23429         * exceptions-ppc.c: more macosx support.
23430
23431 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23432
23433         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23434
23435 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23436
23437         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23438
23439 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23440
23441         * iltests.il: more tests.
23442
23443 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23444
23445         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23446         vars as well.
23447
23448 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23449
23450         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23451
23452 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23453
23454         * liveness.c: Mark variables as volatile in all basic blocks reachable
23455         from exception clauses.
23456
23457 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23460         inlining.
23461
23462 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23463
23464         * iltests.il, basic.cs: more tests for regalloc.
23465
23466 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23467
23468         * iltests.il: Some tests for register allocation modifications
23469         I have locally.
23470
23471 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23472
23473         * exceptions.cs: Add regression test for bug #56782.
23474
23475         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23476         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23477         the beauty of fixing the same thing in 5 different files...
23478
23479 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23480
23481         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23482         methods.
23483
23484 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23485
23486         * mini.c: Add support for STRWLPARRAY marshalling convention.
23487
23488 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23489
23490         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23491         to init the context to setup the regs pointer).
23492
23493 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23494
23495         * exceptions-ppc.c: more exceptions work.
23496
23497 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23498
23499         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23500         not allowed.
23501
23502 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23503
23504         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23505         can use the memory directly.
23506
23507         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23508
23509         add x86_add_membase, x86_sub_membase, x86_mul_membase
23510
23511 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23512
23513         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23514         GENERAL_REGS they were also hardcoded for all PPC ports.
23515
23516         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23517
23518         Remove hard-coded limit for floating point registers, use
23519         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23520
23521         Notice that in MacOS X calling conventions you can fit a lot more
23522         floating point values in registers, so I should update the PInvoke
23523         test to excercise the passing of floating point values on the
23524         stack (currently broken).
23525         
23526 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23527
23528         * tramp-ppc.c (create_trampoline_code): Added
23529         JUMP_TRAMPOLINE_SIZE. 
23530         (ppc_magic_trampoline): Follow the pattern from
23531         x86_magic_trampoline: if code is set to zero, return. 
23532         (create_trampoline_code): Always pass MonoMethod to the jump
23533         trampoline, before it was passing a null.
23534         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23535         share the code with mono_arch_create_jit_trampoline. 
23536
23537         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23538         implemented.
23539         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23540         implemented.  
23541
23542         * cpu-g4.md: Added length for jmp instruction, the worst case
23543         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23544         for save_lmf).
23545
23546 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23547
23548         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23549
23550 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23551
23552         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23553         before each IL instruction.
23554
23555         * mini.c (CEE_BOX): Fix warnings.
23556
23557 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23558
23559         * mini.c: removed a few unused vars and extra whitespace.
23560
23561 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23562
23563         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23564         checks.
23565         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23566         index.
23567         (OP_GETCHR): use the above
23568         (CEE_LDELEMA): use the above.
23569
23570         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23571         version of the generic impl.
23572         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23573         (CEE_LDELEMA): use the above.
23574
23575 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23576
23577         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23578         Fixes #56317.
23579
23580         * iltests.il: Added new regression test for #56317.
23581
23582 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23583
23584         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23585         under NetBSD. Fixes #56450.
23586
23587         * liveness.c (update_gen_kill_set): Fix previous patch.
23588
23589 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23590
23591         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23592
23593 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23594
23595         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23596         ldsfld and ldsflda.
23597
23598         * inssel-sparc.brg: Add more optimizations.
23599
23600         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23601
23602 2004-04-01  Martin Baulig  <martin@ximian.com>
23603
23604         * mini.c (handle_box): New static function; moved the
23605         implementation of CEE_BOX here.
23606         (mono_method_to_ir): Added `constrained_call' variable.
23607         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23608         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23609         mono_method_get_constrained() to get the method.
23610
23611 2004-04-01  Martin Baulig  <martin@ximian.com>
23612
23613         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23614         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23615         (mono_method_to_ir): We don't need these macros anymore since
23616         mono_class_get_full() already takes care of it. 
23617
23618 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23619
23620         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23621         use @function (as doesn't accept #function here) and check the return
23622         value of system and stop if fails.
23623
23624 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23625
23626         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23627
23628 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23629
23630         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23631
23632         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23633
23634         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23635         #56223.
23636
23637         * basic-long.cs: Add test for negation of Int64.MinValue.
23638
23639 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23640
23641         * mini-sparc.c: Update status.
23642
23643         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23644
23645         * exceptions-sparc.c: Fix return value in filters.
23646
23647         * inssel-sparc.brg: Fix register allocation in some rules.
23648
23649 2004-03-28  Martin Baulig  <martin@ximian.com>
23650
23651         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23652         if neccessary.  
23653
23654 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23657         
23658         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23659         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23660         remove unused conv_u4 opcode.
23661
23662         * mini-x86.c: Remove valgrind workaround since it slows down things
23663         even when mono is not run under valgrind.
23664
23665 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23666
23667         * mini-sparc.c: Update status.
23668
23669         * inssel-sparc.brg: Add some optimizations.
23670
23671         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23672         future delay slot filling. Add support for varargs, tail calls and JMP.
23673
23674         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23675         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23676
23677         * inssel.brg: Fix register allocation in OP_ARGLIST.
23678
23679         * inssel.brg: Fix warnings.
23680
23681 2004-03-25  Martin Baulig  <martin@ximian.com>
23682
23683         * mini.c (inflate_generic_field): Removed.
23684         (mini_get_method): Removed, use mono_get_method_full(),
23685         (mini_get_class): Removed, use mono_class_get_full().
23686         (mono_method_to_ir): Pass our generic context to
23687         mono_field_from_token().        
23688
23689 2004-03-25  Martin Baulig  <martin@ximian.com>
23690
23691         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23692         of a `MonoMethod *'.
23693         (mini_get_method): Take a `MonoGenericContext *' instead
23694         of a `MonoMethod *'.
23695         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23696         a new local variable called `generic_context' which holds the
23697         current `MonoGenericContext *'; use it to lookup things.
23698
23699 2004-03-24  Martin Baulig  <martin@ximian.com>
23700
23701         * mini.c (mini_get_class): New static method; if we're inside a
23702         generic instance, inflate the class if neccessary.
23703         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23704
23705 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23706
23707         * iltests.il: New regression test for #55976.
23708
23709         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23710         #55976.
23711
23712 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23715         output.
23716
23717 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23718
23719         * liveness.c: Consider SSA stores as well as loads when making vars
23720         volatile.
23721
23722         * exceptions.cs: New regression tests for register allocation.
23723         
23724 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23725
23726         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23727         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23728           domain lock only to protect puntual access to data structures.
23729           Added access lock for sighash, jit_icall_hash_name, 
23730           jit_icall_hash_addr and domain->code_mp.
23731
23732 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23733
23734         * driver.c: Print SIGSEGV handling method.
23735
23736         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23737
23738         * mini.c (setup_jit_tls_data): Handle case when this is called
23739         multiple times for a thread.
23740
23741         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23742         is different from fbxx_un. Fixes #54303. Also use constants instead of
23743         magic numbers in a lot of places.
23744
23745 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23746
23747         * exceptions.cs: Fix cctor test when --regression is used.
23748
23749 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23750
23751         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23752         for Linux/ppc.
23753
23754 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23755
23756         * inssel-ppc.brg: fixed register assignments for some rules.
23757
23758 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23759
23760         * exceptions.cs: Add test for exceptions in static constructors.
23761
23762         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23763         static constructors outside the domain lock. Fixes #55720.
23764
23765 2004-03-17  Martin Baulig  <martin@ximian.com>
23766
23767         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23768         (inflate_generic_field): Take the `MonoMethod *' instead of the
23769         `MonoClass *' and added support for generic method.
23770         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23771         have a `field->parent->gen_params', only inflate the field if it's
23772         an open constructed type.
23773
23774 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23775
23776         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23777         exception object instead of the preconstructed ones.
23778
23779 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23780
23781         * mini.c: reverted changed to sigsegv_signal_handler commited
23782         accidentally in the previous patch.
23783
23784 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23785
23786         * mini.c:
23787         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23788         running --aot with an old assembly.
23789
23790 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23791
23792         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23793         point values.
23794
23795         * mini-sparc.c: Add support for v9 branches with prediction.
23796
23797 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23798
23799         * mini.c (mini_init): #warning is GNUC only
23800
23801         * mini-sparc.h: implement __builtin_frame_address
23802         and __builtin_return_address for Sun C compiler
23803
23804 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23805
23806         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23807
23808 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * basic-calls.cs: Add test for unaligned byref long argument passing.
23811
23812         * mini-ops.h: Add sparcv9 compare and branch instructions.
23813
23814         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23815         v9 instructions if we have a v9 cpu.
23816
23817         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23818         registers for global allocation.
23819
23820         * exceptions-sparc.c: Fixes.
23821         
23822 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * liveness.c (mono_analyze_liveness): Optimized version.
23825
23826         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23827
23828         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23829         sparc work.
23830
23831         * basic-float.cs basic-calls.cs: New regression tests.
23832
23833 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23836         sigaltstack implementation.
23837
23838         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23839         
23840         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23841         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23842
23843 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23844
23845         * mini.c: Fix warnings.
23846         
23847         * mini.c (mono_resolve_patch_target): New function which contains the
23848         arch independent part of the patching process.
23849
23850         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23851         patching code to a separate function.
23852
23853 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23854
23855         * mini.c (add_signal_handler): ifdef out on Windows
23856
23857 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23858
23859         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23860         cpu-sparc.md: Add exception handling support + other fixes.
23861
23862         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23863         typed GC detection in --version.
23864
23865         * basic.cs exceptions.cs: New regression tests.
23866
23867         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23868         the arch specific code can store data during a compilation.
23869
23870         * mini-ops.h: Add OP_SETFRET.
23871
23872         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23873         function, register a separate icall for each arity, so the icalls can
23874         get a wrapper.
23875         
23876         * mini.c (mono_print_tree): Print negative offsets in a more readable
23877         form.
23878         
23879         * mini.c: Make signal handling work on sparc.
23880         
23881         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23882
23883         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23884
23885         * jit-icalls.c: Emulate truncl by aintl on solaris.
23886
23887         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23888
23889 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23890
23891         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23892
23893 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23894
23895         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23896         a MarshalByRef type, inline a method that performs the check, taking into
23897         account that the object can be a proxy. Also implemented tow new opcodes:
23898         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23899         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23900         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23901
23902 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23903
23904         * mini-ppc.c: if a relative branch displacement is too big
23905         but it points to and area reachable with an absolute branch, 
23906         avoid the thunks.
23907
23908 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23909
23910         * mini.c: optimize small copies in cpblk.
23911
23912 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23913
23914         * basic-calls.cs basic-float.cs: New regression tests.
23915
23916         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23917         negative offsets from %fp. Implement localloc. Fix local register 
23918         allocation. Fix the case when the this argument needs to be saved to
23919         the stack. Implement some missing opcodes.
23920
23921 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23922
23923         * mini.c (mini_method_compile): Reenable global regalloc in methods
23924         with exception handlers.
23925
23926         * linear-scan.c (mono_varlist_sort): Fix warning.
23927
23928         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23929
23930         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23931         regalloc costs.
23932
23933         * liveness.c: Make all variables uses in exception clauses volatile, to
23934         prevent them from being allocated to registers. Fixes #42136.
23935
23936 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23937
23938         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23939         causes regressions.
23940
23941         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23942         argument to mono_arch_regalloc_cost.
23943
23944         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23945         precisely.
23946
23947 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23948
23949         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23950         Make the cost of allocating a variable to a register arch dependent.
23951
23952         * basic-calls.cs: Fix compilation of tests.
23953         
23954         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23955         helper function to cut back on the number of #ifdefs needed.
23956
23957         * mini-ppc.c: Fix compilation.
23958
23959         * basic-calls.cs: New regression tests.
23960
23961         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23962
23963         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23964         of l0 since that is callee saved.
23965
23966         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23967         to virtual calls.
23968
23969         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23970         of delay instruction.
23971
23972         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23973
23974         * mini.h (MonoCallInst): Add 'virtual' flag.
23975
23976         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23977
23978 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23979
23980         * *.cs: New regression tests.
23981
23982         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23983         work.
23984
23985         * mini.c (mono_runtime_install_handlers): Fix build.
23986
23987         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23988         'signal_stack_size' members.
23989
23990         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23991         alternate signal stack.
23992
23993         * exceptions-x86.c: Add stack overflow handling.
23994
23995         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23996         functions to arch independent code.
23997
23998         * mini.c (mono_print_tree): Print more detailed info for load_membase
23999         opcodes.
24000         
24001 2004-02-23  Martin Baulig  <martin@ximian.com>
24002
24003         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24004
24005 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24006
24007         * mini-x86.c: fixed reg allocation for div/rem.
24008
24009 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24010
24011         * driver.c (mono_main): Report some configuratio options on --version.
24012
24013 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24014
24015         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24016         low in the address space. Correctly flush memory in thunks where we
24017         output native code.
24018
24019 2004-02-20  Martin Baulig  <martin@ximian.com>
24020
24021         * mini.c (mini_get_method): New static method; inflate all generic
24022         methods and methods in open generic instances.
24023         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24024         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24025
24026 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24029
24030         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24031
24032 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24033
24034         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24035
24036         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24037         it compile using Sun's compiler.
24038
24039 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24040
24041         * 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.
24042
24043         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24044
24045 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24046
24047         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24048         code.
24049         * mini-ppc.c: handle calls outside of the allowed range with thunks
24050         allocated using the code manager.
24051         * tramp-ppc.c: use the code manager to hold generated native code.
24052         Fixed the magic trampoline to just patch vtable entries.
24053
24054 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24055
24056         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24057         independent file.
24058
24059 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24062         PPC.
24063
24064         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24065         if we have a working __thread implementation.
24066
24067         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24068         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24069
24070 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24071
24072         * mini-x86.c: Fix compilation under gcc 2.
24073         
24074 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24077         contains a call to the wrapped function.
24078
24079         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24080         OP_<CALL>_IMM opcodes, and use them under X86.
24081         
24082         * mini.c (mono_jit_find_compiled_method): Fix warning.
24083
24084         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24085
24086         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24087
24088         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24089         functionality to mini.c.
24090
24091         * mini.c (mono_create_jump_trampoline): New function to create a jump
24092         trampoline. Return a compiled method instead of a trampoline if it
24093         exists. Add a cache for jump trampolines.
24094
24095         * mini.c (mono_jit_find_compiled_method): New function to return a
24096         compiled method if it exists.
24097
24098         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24099         mono_arch_create_jit_trampoline.
24100
24101         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24102         a jump trampoline. Fixes #52092.
24103         
24104 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24105
24106         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24107         which is not up-to-date. Add check_corlib_version () instead.
24108
24109         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24110         have to call it.
24111         
24112         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24113         since newer valgrind versions do not need it.
24114
24115         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24116         compile a method with a given set of optimizations.
24117
24118         * mini.c: Compile icall wrappers on-demand instead of at startup.
24119
24120         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24121         wrapper for an icall.
24122
24123 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24124
24125         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24126         #54063.
24127
24128         * iltests.il: Add test for non-empty stack before switch instruction.
24129
24130 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.c: Add support for new stringbuilder marshalling conventions.
24133
24134         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24135
24136 2004-02-01  Martin Baulig  <martin@ximian.com>
24137
24138         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24139         in `ginst->mtype_argv'.
24140
24141 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24142
24143         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24144         facilitate grepping.
24145
24146 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24147
24148         * mini.c: fixed buglet in initobj generic implementation for references.
24149
24150 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24151
24152         * Makefile.am: make the version script conditional.
24153         * jit-icalls.c: handle missing truncl().
24154
24155 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * exceptions.cs: Add more tests for double->int conversion.
24158
24159         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24160         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24161
24162 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24163
24164         * driver.c: make --verbose --version emit an error
24165         if the loaded corlib doesn't match the runtime version.
24166
24167 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24168
24169         * mini-ppc.h: export ppc_patch().
24170         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24171         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24172         on par or better than on MacOSX.
24173
24174 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24175
24176         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24177         mono_lookup_pinvoke_call.
24178
24179         * mini-x86.c: Under windows, the default pinvoke calling convention is
24180         stdcall. Fixes #52834.
24181
24182         * mini.c (optimize_branches): Add an upper bound to the number of
24183         iterations to prevent infinite loops on strange loops. Fixes #53003.
24184
24185 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24186
24187         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24188         and ISINST. Fixes #52093.
24189
24190         * objects.cs (test_0_vector_array_cast): New tests.
24191         
24192 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24193
24194         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24195         checking in Array.Set ().
24196
24197         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24198         #52590.
24199
24200         * object.cs (test_0_multi_array_cast): New regression test.
24201
24202 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24203
24204         * exceptions-ppc.c: fix build on Linux/PPC.
24205
24206 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24207
24208         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24209         running under valgrind.
24210         (x86_magic_trampoline): Fix build bustage.
24211
24212         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24213         negative values as well. This is needed for the encoding of the line number
24214         info, since sometimes the line numbers are not in increasing order.
24215
24216 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * cpu-pentium.md (localloc): Increase the size of the localloc 
24219         instruction since it is a loop under Win32.
24220
24221         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24222         allocation.
24223
24224 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24227         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24228         Max Horn (max@quendi.de). Fix file names in comments.
24229
24230 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24231
24232         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24233         avoid stack overflow.
24234         (replace_usage): Avoid uninitialized variable warnings.
24235
24236         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24237         and taking the address of valuetype variables.
24238
24239 2004-01-03  Patrik Torstensson
24240
24241         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24242         for other purposes than FP later on.
24243
24244 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24245
24246         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24247         of tail calls.
24248
24249 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24250
24251         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24252
24253 2003-12-30  Patrik Torstensson <p@rxc.se>
24254
24255         * mini-x86.h: Decreased number of availiable fp regs.
24256         Solves corner cases with FP spilling.
24257
24258 2003-12-23  Patrik Torstensson <p@rxc.se>
24259
24260         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24261         for floating point stack tracking / spilling on x86. 
24262         Fixes bug #49012.
24263         
24264         * basic-float.cs: added float mul overflow test.
24265
24266 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24267
24268         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24269
24270 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24271
24272         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24273         supports for cond branches that overflow the immediate
24274         overflow offset. mcs can compile simple programs.
24275
24276 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24277
24278         * exceptions-ppc.c: exception handling support wip:
24279         finally handlers get run on exception.
24280
24281 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24284         profiling.
24285
24286 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24287
24288         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24289         initial support for stack walking and unwinding.
24290
24291 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * driver.c (mono_main): Make corlib-out-of-sync message more 
24294         descriptive. Also remove verify_corlib call.
24295
24296 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24297
24298         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24299         not overlap with other call's arguments, too.
24300
24301 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24302
24303         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24304         move to arch-specific code the choice of arch-specific
24305         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24306         * mini.c: ensure emulation calls will not interleave
24307         with other calls.
24308
24309 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24312         the magic trampoline stack frame is dropped before executing
24313         the new method.
24314
24315 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24316
24317         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24318         and integer to fp conversions. Added support for overflowing
24319         arguments on the stack. Reserve a couple more registers as temps.
24320         Added support for aot compilation (as output still needs to be
24321         tweaked, though).
24322
24323 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24324
24325         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24326         Don't overwrite return register in some corner cases.
24327
24328 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24329
24330         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24331         static constructors when AOT compiling.
24332
24333         * driver.c (mono_main): Call mono_check_corlib_version.
24334
24335 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24336
24337         * cpu-g4.md, basic.cs: fixed div target register.
24338
24339 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24340
24341         * mini-ppc.c, basic.cs: shl_imm fix with test.
24342
24343 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24344
24345         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24346         structures by value. Misc fixes.
24347         * objects.cs: more tests.
24348
24349 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24350
24351         * mini-ppc.c: lconv.ovf.i implemented.
24352
24353 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24354
24355         * mini.c:
24356         (mini_init): don't error out if someone already called g_thread_init.
24357
24358 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24359
24360         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24361         to be any type per the spec. Fix abnormal memory usage when
24362         the same object is repeatedly thrown.
24363
24364 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24365
24366         * mini.c: check for overruns in IL code.
24367
24368 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24369
24370         * TODO: Add/remove some todo entries.
24371
24372 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24373
24374         * driver.c (mono_main): Call mono_verify_corlib.
24375
24376 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24377
24378         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24379         This has been moved to mini.c
24380         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24381         type being casted is marshalbyref it could be a proxy, so instead of
24382         emitting the type check code, emit a call to a runtime method that will
24383         perform the check by calling CanCastTo if needed.
24384
24385 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24388         methods with large stack frames under Win32.
24389
24390 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24391
24392         * Makefile.am: Distribute regression tests.
24393
24394         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24395         at the end instead of inserting each variable into the sorted list.
24396
24397         * linear-scan.c (mono_varlist_sort): New helper function.
24398         
24399 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24400
24401         * mini.c: ensure arguments and locals are within bounds.
24402
24403 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24404
24405         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24406         related fixes.
24407
24408 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24409
24410         * mini.c (mono_cprop_copy_values): Fix crash.
24411
24412         * aot.c: Set verbosity back to 0.
24413         
24414 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24415
24416         * regalloc.c: complete memory leak fix by Laurent Morichetti
24417         (l_m@pacbell.net).
24418
24419 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * driver.c (main_thread_handler): Revert the previous patch.
24422
24423         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24424         under valgrind.
24425
24426         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24427         memory from the memory pool.
24428
24429         * driver.c (main_thread_handler): Turn on all optimizations when
24430         --aot is used.
24431
24432         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24433         an array for better performance.
24434
24435         * regalloc.c (mono_regstate_assign): Fix memory leak.
24436
24437         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24438         serialize the debug info.
24439
24440         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24441         debug info from the serialized representation.
24442
24443         * aot.c: Save debug info into the generated file and load it when 
24444         loading a method.
24445
24446         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24447
24448 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24449
24450         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24451         More FP-related fixes.
24452
24453 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24454
24455         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24456         and register allocation buglet. Hello world now runs.
24457
24458 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24459
24460         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24461         * tramp-ppc.c: fixed class init trampoline.
24462         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24463
24464 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24465
24466         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24467         mini.c: more ppc changes/fixes.
24468
24469 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24470
24471         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24472         Also optimize the case when the arguments are the same in the caller 
24473         and in the callee.
24474
24475         * iltests.il: Add tests for tail calls with valuetype arguments.
24476
24477 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24478
24479         * mini-ppc.c: fixes for struct return type.
24480
24481 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24482
24483         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24484         mono_spillvar_offset() to arch-specific code.
24485
24486 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24489
24490 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24491
24492         * exceptions-x86.c: Fix stack space leaks.
24493         
24494         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24495         registers from the lmf if the method has save_lmf set.
24496
24497 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24498
24499         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24500         of icall wrappers into InvokeInDomain, since these are now per-domain.
24501
24502 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24503
24504         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24505         make some opcode emulation and intrinsic ops enabled/disabled 
24506         according to the architecture. More fixes.
24507
24508 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24509
24510         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24511
24512 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24513
24514         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24515         arch-specific handling for 'this' and struct return type to
24516         arch-specific code.
24517
24518 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24519
24520         * aot.c: prevent divide by zero error when reporting (it happened with
24521         Accessibility.dll).
24522
24523 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24524
24525         * mini.h (inst_switch): Remove unused macro.
24526
24527 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24528
24529         * aot.c:
24530         (load_aot_module): free 'info->methods' and 'info' properly. No more
24531         "free(): invalid pointer blah" messages when you have an old aot
24532         compiled assembly.
24533
24534 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24535
24536         * jit-icalls.c, mini.c: Added support for context static fields.
24537
24538 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * mini.c (mono_method_blittable): Methods which set LastError are not 
24541         blittable either. Fixes #51108.
24542         
24543 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24544
24545         * mini.c: flush icache.
24546         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24547
24548 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24549
24550         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24551
24552 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24553
24554         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24555         safe on IA32.
24556
24557         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24558         vararg calls.
24559
24560         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24561
24562 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24563
24564         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24565         instruction when the result is discarded.
24566
24567         * iltests.il (test_0_div_regalloc): New regression test.
24568
24569         * arrays.cs: Fix compilation error.
24570
24571 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24572
24573         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24574         float rules to inssel-x86.brg: sane architectures with FP registers
24575         don't need to implement these rules.
24576
24577 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24580
24581 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24582
24583         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24584         implementation of 32 bit systems.
24585
24586 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24587
24588         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24589         (Jeroen Zwartepoorte).
24590
24591 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24592
24593         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24594         the caller and the callee matches.
24595         
24596         * mini.c (mono_method_to_ir): Add comment.
24597
24598         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24599         signbit is missing on some platforms.
24600
24601 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24602
24603         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24604
24605         * mini.c (setup_jit_tls_data): Call the new function.
24606         
24607         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24608
24609         * mini-x86.c: Add experimental support for fast access to the lmf
24610         structure under NPTL/Linux 2.6.x.
24611
24612 2003-11-06  Martin Baulig  <martin@ximian.com>
24613
24614         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24615         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24616         the debugger.
24617
24618 2003-11-02  Martin Baulig  <martin@ximian.com>
24619
24620         * mini.c (inflate_generic_field): New static method.
24621         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24622         generic instance and the field is declared in a generic type, call
24623         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24624
24625 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24626
24627         * mini.h mini.c (mono_method_same_domain): New function to return
24628         whenever the caller and the callee are in the same domain.
24629
24630         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24631
24632 2003-10-30  Martin Baulig  <martin@ximian.com>
24633
24634         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24635         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24636         method parameters.
24637         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24638         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24639
24640 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24641
24642         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24643         propagation.
24644
24645         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24646         object here, so it is in the correct appdomain etc.
24647
24648 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24649
24650         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24651         already done.
24652         (mono_method_to_ir): Avoid freeing the type created returned from
24653         mono_type_create_from_typespec, since it is put into an internal cache
24654         by the function. Fixes pointer.exe.
24655
24656         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24657         trampolines for icalls and pinvokes as well. Fixes #33569.
24658
24659 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * mini.c: Update after appdomain changes.
24662
24663         * mini.c (mono_jit_compile_method_inner): Allways compile native
24664         method wrappers in the root domain, since there can only be one
24665         instance of them, whose address is stored in method->info.
24666
24667 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24668
24669         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24670         environment variable. Instead detect automatically whenever running
24671         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24672         valgrind.h.
24673
24674 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24675
24676         * trace.c, trace.h: New files that implement the new trace option
24677         parsing. 
24678
24679         * driver.c: Document new --trace options.
24680
24681         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24682         mini-x86.c: Apply:
24683
24684         -       if (mono_jit_trace_calls)
24685         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24686
24687         * mini.h: prototypes.
24688         
24689 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24690
24691         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24692
24693         * mini.c inssel.brg: Implement typedefbyref opcodes.
24694
24695         * mini.c (mono_jit_compile_method): Remove unused local variable.
24696
24697         * mini.c (mono_jit_compile_method_inner): Ditto.
24698         
24699 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24700
24701         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24702         
24703         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24704
24705 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24706
24707         * mini.c (mono_no_aot): Remove unused global variable.
24708
24709         * mini.c: Thread safety fixes.
24710
24711 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24712
24713         * mini.c (mono_create_class_init_trampoline): Add a lock around
24714         class_init_hash_addr.
24715
24716         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24717         #30073.
24718
24719         * mini.c: Decompose the NEWARR instruction before decomposing its
24720         arguments. Fixes #30073.
24721
24722 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24723
24724         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24725         convention.
24726
24727 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24728
24729         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24730
24731         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24732
24733         * driver.c: Add support for compiling icall wrappers to --compile.
24734
24735 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * inssel.brg: The empty value in class->interface_offsets is -1, not
24738         0. Fixes #49287.
24739
24740 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24741
24742         * objects.cs: New test for 'is' operator on an array of interfaces.
24743
24744 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24745
24746         * tramp-ppc.c: update trampoline code to support jumps
24747         and class initialization.
24748
24749 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24750
24751         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24752
24753         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24754
24755         * inssel.brg (OP_UNBOX): Remove unused rule.
24756
24757         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24758         region instead of one for each method. Fixes #47813.
24759
24760 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24761
24762         * exceptions.cs (test_0_nested_finally): New regression test for
24763         nested exception handlers.
24764
24765         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24766
24767         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24768
24769         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24770         inlining.
24771
24772         * mini.c (mono_method_check_inlining): Make the inlining limit 
24773         configurable by an environment variable.
24774         
24775         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24776
24777         * mini.h: Bump AOT file version.
24778
24779         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24780         token, store the image along with the token, since the token might not 
24781         refer to the same image as the method containing the relocation, 
24782         because of inlining.
24783
24784 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24785
24786         * mini.c (mono_precompile_assemblies): New function to compile
24787         all methods in all loaded assemblies.
24788
24789         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24790
24791         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24792         iassign and fassign to int*, since they can contain large negative
24793         values if the register is spilled. Also added some comments. Fixes
24794         #45817.
24795
24796         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24797         under Win32. Fixes #42964.
24798
24799 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24800
24801         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24802
24803         * aot.c: Added support for AOT compiling methods which contain calls
24804         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24805         handled.
24806         
24807         * driver.c (compile_all_methods): Run the compilation in a thread
24808         managed by mono. Fixes #44023.
24809
24810         * mini.c (mono_codegen): Print full method name in verbose output.
24811
24812         * mini-x86.c (mono_arch_patch_code): Fix warning.
24813         
24814         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24815         jumps, since the method we are jumping to might be domain-specific.
24816
24817         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24818
24819 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24820
24821         * inssel.brg: string chars are unsigned.
24822
24823 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24824
24825         * TODO: New todo item.
24826
24827         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24828         which calls mono_runtime_class_init and patches the call site to
24829         avoid further calls.
24830         (mono_arch_create_class_init_trampoline): New arch specific function 
24831         to create a class init trampoline.
24832         (create_trampoline_code): Generalized so it can create
24833         class init trampolines as well.
24834
24835         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24836         (mono_create_class_init_trampoline): New function to create and cache
24837         class init trampolines.
24838         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24839         vtable given the address of a class init trampoline. Used by the
24840         patching process.
24841         (mono_codegen): Generate a call to a trampoline instead of
24842         mono_runtime_class_init in LDSFLD[A].
24843         (mono_codegen): Add relocations for the new trampoline.
24844         
24845         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24846         MONO_PATCH_INFO_CLASS_INIT.
24847
24848         * mini.h: Bump AOT version number.
24849
24850         * aot.c: Create a copy of the loaded code instead of using the original
24851         so methods which call each other will be close in memory, improving
24852         cache behaviour.
24853         
24854         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24855         patch since it breaks the regression tests.
24856         
24857         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24858         for the register saving instruction sequence since the 
24859         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24860
24861 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24862
24863         * TODO: Fix todo item && remove another.
24864
24865 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24866
24867         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24868         previous checkin.
24869
24870         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24871         function of the module.
24872
24873         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24874         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24875         --no-aot command line option.
24876
24877 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24878
24879         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24880         by Bernie Solomon (bernard@ugsolutions.com).
24881
24882         * inssel.brg: Refactor the interface offset table related code into
24883         its separate functions and add support for the AOT case.
24884
24885 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24888         
24889         * aot.c: Added mono_aot_verbose variable and made all debugging
24890         output depend on the value of this variable.
24891
24892         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24893         method_label and info_label.
24894
24895         * mini.h mini-x86.c aot.c: Added a new relocation type 
24896         MONO_PATCH_INFO_IID for klass->interface_id.
24897
24898         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24899         the MonoJitInfo structure.
24900
24901         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24902         a non-root appdomain in shared mode.
24903
24904 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24905
24906         * aot.c: make aot loader less verbose. Remove free of unused variable.
24907
24908 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24909
24910         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24911
24912         * .cvsignore: Added *.dll.
24913
24914         * mini.c (mono_print_tree_nl): New function callable while debugging.
24915
24916         * mini.c (mono_print_code): Export this.
24917
24918         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24919         patched code.
24920
24921 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24922
24923         * mini.h (MonoCompile): Added 'jit_info' field.
24924
24925         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24926         the cfg structure, since it is needed by the AOT compiler.
24927
24928         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24929
24930         * aot.c: A major rewrite. Changes include:
24931         - save exception tables for methods which have them.
24932         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24933         to g_module_symbol.
24934         - reworked the file format so it is now much smaller and needs
24935         fewer relocation entries.
24936         
24937 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24938
24939         * aot.c (load_aot_module): Fix build bustage on platforms without
24940         Boehm GC.
24941
24942 2003-09-04  Martin Baulig  <martin@ximian.com>
24943
24944         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24945
24946 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24947
24948         * TODO: Some new optimization ideas.
24949
24950         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24951
24952         * aot.c: Save the optimization flags used to compile the code into
24953         the AOT module.
24954
24955         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24956         support emitting domain specific code.
24957         
24958         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24959         no longer domain neutral. It can be made domain neutral by compiling 
24960         with --optimize=shared.
24961
24962         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24963         between appdomains.
24964
24965         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24966         loading of AOT code.
24967
24968         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24969         
24970         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24971         if there is no domain neutrality information.
24972
24973 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24974
24975         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24976         format version into the generated library.
24977
24978         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24979         callee method into the caller since one of them could be shared.
24980
24981         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24982         system exceptions from AOT code now works.
24983
24984         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24985         method if it is domain neutral and the callee is not.
24986
24987         * graph.c (cfg_emit_one_loop_level): Fix warning.
24988
24989 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24990
24991         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24992         last checkin.
24993
24994 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24995
24996         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24997         is needed  by code which is executed before mono_runtime_init ().
24998         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24999         
25000         * mini.c (mono_thread_abort): Fix warning.
25001         (mono_jit_compile_method): Call static constructor in the AOT case too.
25002
25003         * aot.c (mono_compile_assembly): Fix warning.
25004
25005 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25006
25007         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25008
25009 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25010
25011         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25012
25013         * cpu-pentium.md: Fix the length of call opcodes so they include the
25014         ESP restoring instruction. Fixes #47968.
25015
25016 2003-08-28  Martin Baulig  <martin@ximian.com>
25017
25018         * mini-x86.c (mono_arch_call_opcode): Added support for
25019         MONO_TYPE_GENERICINST.
25020
25021         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25022
25023 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25026         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25027
25028         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25029         metadata_section.
25030
25031 2003-08-26  Martin Baulig  <martin@ximian.com>
25032
25033         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25034         when reporting an error, set this to the actual error location.
25035         (mono_method_to_ir): Report the correct error location if
25036         get_basic_blocks() returned an error.
25037
25038 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25039
25040         * mini.c (mono_type_blittable): OBJECT is not blittable.
25041         (mono_method_blittable): Methods which have marshalling descriptors
25042         are not blittable either. Fixes #47842.
25043
25044 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * driver.c mini.c: Use an environment variable instead of a global 
25047         variable. Also fix the build.
25048
25049         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25050         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25051         reporting this. 
25052
25053         * driver.c mini.c: Added --with-valgrind option to turn off some
25054         code which prevents mono from running under valgrind.
25055
25056         * mini.c (mono_emit_call_args): Fixed warning.
25057
25058         * mini.c (mono_emulate_opcode): Fixed warning.
25059
25060 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25061
25062         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25063         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25064         regalloc.c, regalloc.h: specify available registers in arch-specific
25065         code and support floats in the regallocator (patch by Laurent Morichetti 
25066         <l_m@pacbell.net>)
25067
25068 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25069
25070         * mini.c: mono_thread_current() can be called only after
25071         mono_runtime_init(): rearrange code to not call it early on.
25072
25073 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25074
25075         * mini.c: allocate jump tables in the code mempools.
25076
25077 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25078
25079         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25080         freed.
25081
25082 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25083
25084         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25085         12 to 16.  This fixes bug #47453.
25086
25087
25088 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25089
25090         * mini-ppc.c: fixed indexed load and unsigned compares.
25091
25092 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25093
25094         * mini.c: reenabled installation of handler for
25095           thread abort signal.
25096
25097 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25098
25099         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25100         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25101         until it's fixed and actually useful.
25102
25103 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25104
25105         * inssel-long32.brg: couple more opcodes implemented.
25106
25107 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25108         
25109         * mini-sparc.c: Even more opcodes implemeted.
25110
25111 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25112
25113         * mini-sparc.c: More opcodes implemented.
25114
25115 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25116
25117         * mini-sparc.c: More opcodes implemented.
25118
25119 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25120
25121         * inssel-sparc.brg: Add some needed rules.  Direct
25122         copy from PPC.
25123         * Makefile.am: Use inssel-sparc.brg
25124         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25125         an assert happy for now.
25126
25127 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25128
25129         * mini-sparc.c: Fixed compile errors.
25130         * exceptions-sparc.c: Same.  We now produce a mono binary 
25131         on sparc-linux.  Yea.
25132
25133 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25134
25135         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25136         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25137         They compile, but do not work.
25138
25139 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25140
25141         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25142         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25143         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25144         (ct@gentoo.org).
25145
25146 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25147
25148         * mini.c: more opcodes implemented and better support for generics.
25149
25150 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25151
25152         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25153         * mini.c, mini.h: first cut at generics support: some new instructions 
25154         added and changed the behaviour of some of the existing ones.
25155
25156 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25157
25158         * mini.c: Removed definition of metadata_shared mutex here.
25159
25160 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25161
25162         * mini-x86.c: make vararg calls work for instance methods.
25163
25164 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25165
25166         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25167         returns the arguments in a separte list, now.
25168
25169 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * aot.c, mini.c: updates for array type representation changes.
25172
25173 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25174
25175         * mini.c: register function to perform jit shutdown.
25176
25177 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25178
25179         * mini.c: use a faster allocator if possible.
25180
25181 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * aot.c: some cleanups and portability changes.
25184
25185 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25186
25187         * mini.c: use faster allocation for CEE_BOX if possible.
25188
25189 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25192         Moved inlined mempcy code to its own function so that is can be
25193         reused. Added an inline memset function as well (optimized initobj).
25194         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25195
25196 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25197
25198         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25199
25200 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25201
25202         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25203         arch code can setup the cpu for CLR execution, if needed.
25204         We use it on x86 to set the precision of FP operations.
25205
25206 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * mini.c: disable some optimizations if we can guess they'll cost too
25209         much for a given method.
25210
25211 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25212
25213         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25214         
25215 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25216         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25217         info collection support.
25218
25219 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25220
25221         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25222         is now implemented in the profiling API. Get rid of a couple of
25223         unnecessary global variables.
25224
25225 2003-06-15  Nick Drochak <ndrochak@gol.com>
25226
25227         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25228         * cpu-g4.md: add op_bigmul and op_bigmul_un
25229         * cpu_pentium.md: add op_bigmul_un
25230         * inssel-long32.brg: add rule for unsigned bigmul
25231         * mini-ops.h: define OP_BIGMUL_UN
25232         * mini-x86.c: THE BUG: handle (un)signed properly
25233         * mini.c: choose unsigned opcode if needed.
25234         This set of patches fixes bug #44291
25235
25236 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25237
25238         * mini.c (optimize_branches): improved to handle all kinds of
25239         conditional branches.
25240
25241 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25242
25243         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25244         don't raise exceptions.
25245
25246 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25247
25248         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25249         to arch-specific files.
25250
25251 2003-06-09  Martin Baulig  <martin@ximian.com>
25252
25253         * Makefile.am (libs): Added $(LIBGC_LIBS).
25254
25255 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25258         and OP_ATAN (fixes bug#44293).
25259
25260 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * Makefile.am, mini-x86.c: rename cpu description array to
25263         pentium_desc, since some compilers define the 'pentium' preprocessor
25264         symbol.
25265
25266 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25267
25268         * mini.c (mini_select_instructions): add explicit branch if the
25269         following block is not the false target of a conditional branch -
25270         we need this with any optimization that reorder or remove bblocks
25271
25272         * mini.c (optimize_branches): bug fixes
25273
25274 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25275
25276         * mini.c (mono_method_to_ir): inline static readonly fields
25277
25278         * ssa.c (fold_tree): start cfold support for long (very simple
25279         cases only)
25280
25281         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25282
25283 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25284
25285         * inssel.brg: fixed memcpy (bug #44219).
25286
25287 2003-06-05  Dick Porter  <dick@ximian.com>
25288
25289         * driver.c: Set the glib log levels to not abort if g_message
25290         recurses.
25291
25292         g_set_prgname() has to happen before mini_init() so that the
25293         process handle gets the info.
25294         
25295 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25296
25297         * driver.c: add intrins to the default optimizations to get wider
25298         exposure.
25299
25300 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25301
25302         * mini.h: some large basic blocks will overflow a 16-bit
25303         integers for symbolic registers.
25304
25305 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25306
25307         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25308         (mono_arch_output_basic_block): fix bug 43499 
25309
25310 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25311
25312         * mini.c: kill duplicated definition of mono_debug_format.
25313
25314 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25315
25316         * mini-x86.c, arrays.cs: fixed register allocation bug.
25317
25318 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25319
25320         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25321
25322         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25323
25324 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25325
25326         * mini.c:
25327         (print_method_from_ip): also print source location information if
25328         available.
25329
25330 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25331
25332         * mini.c (mono_find_block_region): bug fix in region code
25333         (mini_method_compile): enable removing unreachable code again, but
25334         only in methods without exception clauses.
25335
25336 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25337
25338         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25339         Implemented arglist opcode and handling of TypedReference type.
25340         Fixed x86 call convention when a structure is returned.
25341         Minimal support for calling static vararg methods.
25342
25343 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25344
25345         * mini.c (mini_method_compile):  always remove unreachable code,
25346         because the code in them may be inconsistent  (access to dead
25347         variables for example).
25348
25349 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25350
25351         * driver.c, debug-mini.c: warning fixes.
25352
25353 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25354
25355         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25356
25357 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25358
25359         * mini.c: thread-static fields are registered in mono_class_vtable(),
25360         so ensure the function is called before checking for them.
25361
25362 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25363
25364         * mini.c (optimize_branches): fix for bug 43586
25365
25366         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25367         overflow (fixes Bug #43639)
25368
25369 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25370
25371         * mini.c, objects.cs: allow the use of stobj for primitive types.
25372
25373 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25374
25375         * mini.c: be less strict about argument checking until we support
25376         running the verifier.
25377
25378 2003-05-27  Nick Drochak <ndrochak@gol.com>
25379
25380         * basic-long.cs: tests for (ulong)int * (ulong)int also
25381         * mini.c: use the same trick for (ulong)int * (ulong)int
25382
25383 2003-05-27  Nick Drochak <ndrochak@gol.com>
25384
25385         * basic-long.cs: add regression test for (long)int * (long)int
25386         * cpu-pentium.md: add op_bigmul specification
25387         * inssel-long32.brg: add OP_BIGMUL rule
25388         * mini-ops.h: add OP_BIGMUL
25389         * mini-x86.c: register allocator: handle case where src1 needs to be
25390         in EAX.
25391         * mini.c: substitute special BIGMUL opcode in the tree for 
25392         (long)int * (long)int
25393
25394 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25395
25396         * jit-icalls.c: call the type ctor on field access if needed.
25397
25398 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25399
25400         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25401         to a method (including results of ldelema, bug#43207).
25402
25403 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25404
25405         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25406         colors to show exception handler blocks.
25407
25408         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25409         (fix for pinvoke7.cs).
25410
25411 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25412
25413         * mini.h, mini.c: ensure correct initialization order for types that
25414         require it. Prepare for lazy compilation of jit icall wrappers.
25415         Provide a name for opcode emulation to reduce unneeded mallocing.
25416
25417 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25418
25419         * mini-x86.c: better register restoring code and profiling
25420         support for tail calls.
25421
25422 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25423
25424         * mini.h, driver.c: prepare for leaf methods optimization.
25425
25426 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25427
25428         * mini.c: get targets of branches before converting a method.
25429
25430 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25431
25432         * mini.c (optimize_branches): added some experimental code (disbaled) 
25433
25434 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25435
25436         * mini.c (optimize_branches): fix branch to branch optimization 
25437
25438         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25439
25440         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25441
25442         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25443
25444         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25445         if needed.
25446
25447 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25448
25449         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25450         enable use of interface variables again.
25451
25452         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25453         I1 to registers because there is no simply way to sign extend 8bit
25454         quantities in caller saved registers on x86.
25455
25456         * inssel-float.brg: set costs of some rules to 2 so
25457         that monobure always select the arch. specific ones if supplied,
25458         regardless of the order we pass the files to monoburg.
25459
25460 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25461
25462         * mini.c, mini-x86.c: since the magic trampoline for jumps
25463         can't patch the code directly, we do it as soon as the
25464         method gets compiled.
25465
25466 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25467
25468         * mini-x86.c, mini.h: introduce a new patching method
25469         to support CEE_JMP and tail calls.
25470         * mini.c: obey tail.call. Don't precompile methods target
25471         of CEE_JMP.
25472         * tramp-x86.c: new trampoline code to handle methods
25473         reached through a jump.
25474
25475 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25476
25477         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25478         bit values to registers
25479
25480 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25481
25482         * mini.c (mono_compile_get_interface_var): share interface
25483         variables if possible.
25484
25485 2003-05-16  Martin Baulig  <martin@ximian.com>
25486
25487         * debug-mini.c (mono_init_debugger): New function to initialize
25488         the debugger.  This is not in the debugger since it needs to
25489         access some of mini's internals.
25490
25491 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25492
25493         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25494
25495 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25496
25497         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25498         for value type handling.
25499
25500 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25501
25502         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25503         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25504
25505 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25506
25507         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25508           the constructor through a proxy.
25509
25510 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25511
25512         * jit-icalls.c, inssel.brg: fixes to array element address
25513         calculations.
25514
25515 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25516
25517         * mini-x86.c (is_regsize_var): allocate pointer to registers
25518
25519 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25520
25521         * driver.c: fixed typo, added intrins to the set of optimizations
25522         tested with regressions.
25523
25524 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25525
25526         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25527         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25528         test case.
25529
25530 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25531
25532         * inssel.brg: remove some common pop instructions without side effects
25533
25534 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25535
25536         * inssel-x86.brg: fixed thinko in int to double conversions.
25537
25538 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25539
25540         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25541
25542 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25543
25544         * inssel-long32.brg: two more missing instructions.
25545
25546 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25547
25548         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25549         if not already set.
25550
25551 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25552
25553         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25554         correctly.
25555
25556         * basic-float.cs: Added tests for negative zero.
25557
25558 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25559
25560         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25561         a couple of missing operations for long casts, with test cases.
25562
25563 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25564
25565         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25566
25567 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25568
25569         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25570         code size estimation.
25571
25572 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25573
25574         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25575         abstract methods (fix bug 42542)
25576
25577         * aot.c: add ability to handle array types
25578         
25579 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25580
25581         * mini.c: Call the _specific versions of the object allocation
25582         functions if possible.
25583
25584 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25585
25586         * driver.c: call setlocale ().
25587
25588 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25589
25590         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25591         windows build.
25592
25593 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25594
25595         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25596
25597         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25598         wrappers (fix bug 42122)
25599
25600 2003-05-04  Martin Baulig  <martin@ximian.com>
25601
25602         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25603
25604         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25605         s/mini_set_defaults/mono_set_defaults/g.
25606
25607 2003-05-04  Martin Baulig  <martin@ximian.com>
25608
25609         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25610
25611 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25612
25613         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25614         (reported by Don Roberts).
25615
25616 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25617
25618         * mini.c: temporarily work around two bugs for this release.
25619
25620 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25621
25622         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25623         that contains -export-dynamic and it makes using the ld script
25624         useless.
25625         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25626
25627 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25628
25629         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25630         specific cpu.
25631
25632 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25633
25634         * mini.c: make sure leave calls all the needed finally blocks,
25635         even when the target jumps out of multiple exception clauses.
25636
25637 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25638
25639         * ldscript, Makefile.am: add linker script to reduce the number of
25640         exported symbols (should also fix the issues with libwine defining
25641         some of the same symbols in io-layer).
25642
25643 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25644
25645         * driver.c (mini_main): Avoid assertion when no file name is given on 
25646         the command line.
25647
25648 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25649
25650         * driver.c: added --version/-V command line option.
25651         Added the inline optimization in the regression tests.
25652
25653 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25654
25655         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25656         to the type in the method signature (fixes bug#42134).
25657
25658 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25659
25660         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25661
25662 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25663
25664         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25665
25666 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25667
25668         * driver.c: fixed bug #42100.
25669
25670 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25673
25674 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25675
25676         * mini.c: moved most of the code required to do inlining to its own
25677         function so it can be reused. Inline also ctors if appropriate.
25678
25679 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25680
25681         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25682         the runtime can call mono API functions.
25683
25684 2003-04-27  Martin Baulig  <martin@ximian.com>
25685
25686         * debug-mini.c (mono_debug_init_method): Added
25687         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25688         send a notification to the debugger.
25689
25690         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25691         running in the Mono Debugger, just pass the breakpoint number to
25692         mono_debug_init_method().
25693
25694         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25695
25696 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25697
25698         * mini.c: allow some more unsafe compares.
25699
25700 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25701
25702         * mini-x86.c, Makefile.am: make distcheck works (partially from
25703         a patch by Richard Lee <r.h.lee@attbi.com>).
25704         * regset.c, regset.h: removed, they are unused.
25705
25706 2003-04-25  Dick Porter  <dick@ximian.com>
25707
25708         * driver.c: Usage reports the name as 'mono' not 'mini'
25709         * exceptions-x86.c: Build and run on freebsd
25710
25711 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25712
25713         * Makefile.am: install the program with the 'mono' name and
25714         the library as libmono instead of mini and libmini.
25715
25716 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * driver.c: provide the APIs for the embedding interface of the old jit.
25719
25720 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25721
25722         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25723
25724 2003-04-23  Martin Baulig  <martin@ximian.com>
25725
25726         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25727
25728         * driver.c: Added `--debug' command line argument to enable
25729         debugging support.
25730
25731 2003-04-23  Martin Baulig  <martin@ximian.com>
25732
25733         * debug.[ch]: Removed.  The code is now in
25734         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25735
25736         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25737         last six months.
25738
25739 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25740
25741         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25742
25743 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25744
25745         * mini.c:
25746         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25747         mono_domain_finalize.
25748         (mini_method_compile): use mono_method_profile* if the the option is
25749         enabled.
25750
25751 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25752
25753         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25754         methods with their wrapper.
25755
25756         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25757         methods with their wrapper.
25758
25759         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25760         their wrapper.
25761
25762         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25763         wrapper.
25764
25765         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25766         methods.
25767
25768 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25769
25770         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25771
25772 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25773
25774         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25775         of the mempool. This is slightly faster and uses less memory
25776
25777 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25778
25779         * mini.c: avoid O(n) allocation for variables.
25780
25781 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25782
25783         * mini.c: handle items on the stack after inlining methods.
25784
25785 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25786
25787         * mini.c: make the method->opcode optimization dependent
25788         on MONO_OPT_INSTRINS and do it lazily.
25789
25790 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * driver.c: print overall results at the end of regression run.
25793
25794 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25795
25796         * inssel.brg: don't overwrite symbolic registers.
25797
25798 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25799
25800         * inssel-x86.brg: fix conversion from long to float.
25801
25802 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25803
25804         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25805
25806 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25807
25808         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25809
25810         * driver.c: Added --print-vtable option as in the old JIT.
25811
25812 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25813
25814         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25815
25816 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25817
25818         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25819
25820 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25821
25822         * mini.c regalloc.c regalloc.h: Fix memory leak.
25823
25824 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25825
25826         * aot.c (mono_aot_get_method): register all used strings
25827
25828 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25829
25830         * mini.c: always intern strings references with ldstr at compile time.
25831
25832 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25833
25834         * Makefile.am: add BUILT_SOURCES.
25835
25836 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25837
25838         * driver.c: give a better error message when the assembly to execute
25839         doesn't have an entry point.
25840
25841 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25842
25843         * Makefile.am: added hack for automake
25844
25845         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25846         correct sematics.
25847
25848         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25849
25850 22003-04-07  Martin Baulig  <martin@ximian.com>
25851
25852         * Makefile.am: Added Makefile.am.
25853
25854         * debugger-main.c: Removed, this is now in the debugger where it
25855         belongs.
25856
25857         * mini.pc.in: Call this package `mini' for the moment.
25858
25859
25860
25861
25862
25863
25864
25865
25866
25867
25868
25869
25870
25871
25872